{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Cardano.CLI.EraBased.Transaction.SubTransaction.Option
( pSubTransactionCmds
, pSubTransactionFiles
)
where
import Cardano.Api
import Cardano.Api.Experimental qualified as Exp
import Cardano.CLI.EraBased.Common.Option
import Cardano.CLI.EraBased.Transaction.SubTransaction.Command
import Cardano.CLI.Option.Flag
import Cardano.CLI.Parser
import Cardano.CLI.Read
import Cardano.CLI.Type.Common
import Cardano.CLI.Type.Key
import Control.Monad (join)
import Data.Foldable (asum)
import Data.Function ((&))
import Options.Applicative (Parser, many, optional, some)
import Options.Applicative qualified as Opt
import Options.Applicative.Help qualified as H
import Prettyprinter (line)
pSubTransactionCmds
:: forall era. Exp.IsEra era => Maybe (Parser SubTransactionCmds)
pSubTransactionCmds :: forall era. IsEra era => Maybe (Parser SubTransactionCmds)
pSubTransactionCmds =
case forall era. IsEra era => Era era
Exp.useEra @era of
Era era
Exp.ConwayEra -> Maybe (Parser SubTransactionCmds)
forall a. Maybe a
Nothing
Era era
Exp.DijkstraEra ->
[Char]
-> InfoMod SubTransactionCmds
-> [Maybe (Parser SubTransactionCmds)]
-> Maybe (Parser SubTransactionCmds)
forall a.
[Char] -> InfoMod a -> [Maybe (Parser a)] -> Maybe (Parser a)
subInfoParser
[Char]
"sub-transaction"
( [Char] -> InfoMod SubTransactionCmds
forall a. [Char] -> InfoMod a
Opt.progDesc ([Char] -> InfoMod SubTransactionCmds)
-> [Char] -> InfoMod SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[[Char]] -> [Char]
forall a. Monoid a => [a] -> a
mconcat
[ [Char]
"Sub-transaction commands. A sub-transaction is built and signed on its own, "
, [Char]
"then embedded in a top-level transaction."
]
)
[ Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds)
forall a. a -> Maybe a
Just (Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds))
-> Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds)
forall a b. (a -> b) -> a -> b
$
Mod CommandFields SubTransactionCmds -> Parser SubTransactionCmds
forall a. Mod CommandFields a -> Parser a
Opt.hsubparser (Mod CommandFields SubTransactionCmds -> Parser SubTransactionCmds)
-> Mod CommandFields SubTransactionCmds
-> Parser SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[Char]
-> ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds
forall a. [Char] -> ParserInfo a -> Mod CommandFields a
commandWithMetavar [Char]
"build-raw" (ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds)
-> ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
Parser SubTransactionCmds
-> InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info Parser SubTransactionCmds
pSubTransactionBuildRaw (InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds)
-> InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
Maybe Doc -> InfoMod SubTransactionCmds
forall a. Maybe Doc -> InfoMod a
Opt.progDescDoc (Maybe Doc -> InfoMod SubTransactionCmds)
-> Maybe Doc -> InfoMod SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
Doc -> Maybe Doc
forall a. a -> Maybe a
Just (Doc -> Maybe Doc) -> Doc -> Maybe Doc
forall a b. (a -> b) -> a -> b
$
[Doc] -> Doc
forall a. Monoid a => [a] -> a
mconcat
[ forall a ann. Pretty a => a -> Doc ann
pretty @String [Char]
"Build an unsigned sub-transaction (low-level, inconvenient)"
, Doc
forall ann. Doc ann
line
, Doc
"Canonical output fails if it would change sub-transaction data covered by an existing hash."
, Doc
forall ann. Doc ann
line
, Doc
forall ann. Doc ann
line
, Doc -> Doc
H.yellow (Doc -> Doc) -> Doc -> Doc
forall a b. (a -> b) -> a -> b
$
[Doc] -> Doc
forall a. Monoid a => [a] -> a
mconcat
[ Doc
"Please note "
, Doc -> Doc
H.underline Doc
"the order"
, Doc
" of some cmd options is crucial. If used incorrectly may produce "
, Doc
"undesired sub-transaction body. See nested [] notation above for details."
]
]
, Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds)
forall a. a -> Maybe a
Just (Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds))
-> Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds)
forall a b. (a -> b) -> a -> b
$
Mod CommandFields SubTransactionCmds -> Parser SubTransactionCmds
forall a. Mod CommandFields a -> Parser a
Opt.hsubparser (Mod CommandFields SubTransactionCmds -> Parser SubTransactionCmds)
-> Mod CommandFields SubTransactionCmds
-> Parser SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[Char]
-> ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds
forall a. [Char] -> ParserInfo a -> Mod CommandFields a
commandWithMetavar [Char]
"sign" (ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds)
-> ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
Parser SubTransactionCmds
-> InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info Parser SubTransactionCmds
pSubTransactionSign (InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds)
-> InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[Char] -> InfoMod SubTransactionCmds
forall a. [Char] -> InfoMod a
Opt.progDesc [Char]
"Sign a sub-transaction"
, Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds)
forall a. a -> Maybe a
Just (Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds))
-> Parser SubTransactionCmds -> Maybe (Parser SubTransactionCmds)
forall a b. (a -> b) -> a -> b
$
Mod CommandFields SubTransactionCmds -> Parser SubTransactionCmds
forall a. Mod CommandFields a -> Parser a
Opt.hsubparser (Mod CommandFields SubTransactionCmds -> Parser SubTransactionCmds)
-> Mod CommandFields SubTransactionCmds
-> Parser SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[Char]
-> ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds
forall a. [Char] -> ParserInfo a -> Mod CommandFields a
commandWithMetavar [Char]
"txid" (ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds)
-> ParserInfo SubTransactionCmds
-> Mod CommandFields SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
Parser SubTransactionCmds
-> InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info Parser SubTransactionCmds
pSubTransactionTxId (InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds)
-> InfoMod SubTransactionCmds -> ParserInfo SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[Char] -> InfoMod SubTransactionCmds
forall a. [Char] -> InfoMod a
Opt.progDesc [Char]
"Print a sub-transaction identifier."
]
pSubTransactionBuildRaw :: Parser SubTransactionCmds
pSubTransactionBuildRaw :: Parser SubTransactionCmds
pSubTransactionBuildRaw =
(SubTransactionBuildRawCmdArgs -> SubTransactionCmds)
-> Parser SubTransactionBuildRawCmdArgs
-> Parser SubTransactionCmds
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap SubTransactionBuildRawCmdArgs -> SubTransactionCmds
SubTransactionBuildRawCmd (Parser SubTransactionBuildRawCmdArgs -> Parser SubTransactionCmds)
-> Parser SubTransactionBuildRawCmdArgs
-> Parser SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
[(TxIn, Maybe AnySpendScript)]
-> [TxIn]
-> [TxOutAnyEra]
-> Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs
SubTransactionBuildRawCmdArgs
([(TxIn, Maybe AnySpendScript)]
-> [TxIn]
-> [TxOutAnyEra]
-> Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [(TxIn, Maybe AnySpendScript)]
-> Parser
([TxIn]
-> [TxOutAnyEra]
-> Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (TxIn, Maybe AnySpendScript)
-> Parser [(TxIn, Maybe AnySpendScript)]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
some
( Parser AnySLanguage
-> [Char]
-> BalanceTxExecUnits
-> Parser (TxIn, Maybe AnySpendScript)
pTxInWithPlutusReferenceLanguage
(Era DijkstraEra -> [Char] -> Parser AnySLanguage
forall era. Era era -> [Char] -> Parser AnySLanguage
pPlutusV4ReferenceLanguage Era DijkstraEra
Exp.DijkstraEra [Char]
"spending-")
[Char]
"the spending of the transaction input. Only native scripts or Plutus V4 scripts are supported."
BalanceTxExecUnits
ManualBalance
)
Parser
([TxIn]
-> [TxOutAnyEra]
-> Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [TxIn]
-> Parser
([TxOutAnyEra]
-> Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => 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
pReadOnlyReferenceTxIn
Parser
([TxOutAnyEra]
-> Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [TxOutAnyEra]
-> Parser
(Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
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 Parser TxOutAnyEra
pTxOut
Parser
(Maybe (MultiAsset, [AnyMintScript])
-> Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
-> Parser
(Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ( (Maybe (Maybe (MultiAsset, [AnyMintScript]))
-> Maybe (MultiAsset, [AnyMintScript]))
-> Parser (Maybe (Maybe (MultiAsset, [AnyMintScript])))
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Maybe (Maybe (MultiAsset, [AnyMintScript]))
-> Maybe (MultiAsset, [AnyMintScript])
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (Parser (Maybe (Maybe (MultiAsset, [AnyMintScript])))
-> Parser (Maybe (MultiAsset, [AnyMintScript])))
-> (Parser (Maybe (MultiAsset, [AnyMintScript]))
-> Parser (Maybe (Maybe (MultiAsset, [AnyMintScript]))))
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Parser (Maybe (MultiAsset, [AnyMintScript]))
-> Parser (Maybe (Maybe (MultiAsset, [AnyMintScript])))
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Parser (Maybe (MultiAsset, [AnyMintScript]))
-> Parser (Maybe (MultiAsset, [AnyMintScript])))
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
forall a b. (a -> b) -> a -> b
$
forall era.
IsEra era =>
Parser AnySLanguage
-> [Char]
-> BalanceTxExecUnits
-> Parser (Maybe (MultiAsset, [AnyMintScript]))
pMintMultiAssetWithPlutusReferenceLanguage @Exp.DijkstraEra
(Era DijkstraEra -> [Char] -> Parser AnySLanguage
forall era. Era era -> [Char] -> Parser AnySLanguage
pPlutusV4ReferenceLanguage Era DijkstraEra
Exp.DijkstraEra [Char]
"mint-")
[Char]
"the minting of assets for a particular policy Id. Only native scripts or Plutus V4 scripts are supported."
BalanceTxExecUnits
ManualBalance
)
Parser
(Maybe SlotNo
-> Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser (Maybe SlotNo)
-> Parser
(Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser SlotNo -> Parser (Maybe SlotNo)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional Parser SlotNo
pInvalidBefore
Parser
(Maybe SlotNo
-> [(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser (Maybe SlotNo)
-> Parser
([(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser SlotNo -> Parser (Maybe SlotNo)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional Parser SlotNo
pInvalidHereafterSlot
Parser
([(CertificateFile, Maybe AnyNonAssetScript)]
-> [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [(CertificateFile, Maybe AnyNonAssetScript)]
-> Parser
([(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (CertificateFile, Maybe AnyNonAssetScript)
-> Parser [(CertificateFile, Maybe AnyNonAssetScript)]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many
( Parser AnySLanguage
-> [Char]
-> BalanceTxExecUnits
-> Parser (CertificateFile, Maybe AnyNonAssetScript)
pCertificateFileWithPlutusReferenceLanguage
(Era DijkstraEra -> [Char] -> Parser AnySLanguage
forall era. Era era -> [Char] -> Parser AnySLanguage
pPlutusV4ReferenceLanguage Era DijkstraEra
Exp.DijkstraEra [Char]
"certificate-")
[Char]
"the use of the certificate. Only native scripts or Plutus V4 scripts are supported."
BalanceTxExecUnits
ManualBalance
)
Parser
([(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
-> Parser
(TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (StakeAddress, Coin, Maybe AnyNonAssetScript)
-> Parser [(StakeAddress, Coin, Maybe AnyNonAssetScript)]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many
( Parser AnySLanguage
-> [Char]
-> BalanceTxExecUnits
-> Parser (StakeAddress, Coin, Maybe AnyNonAssetScript)
pWithdrawalWithPlutusReferenceLanguage
(Era DijkstraEra -> [Char] -> Parser AnySLanguage
forall era. Era era -> [Char] -> Parser AnySLanguage
pPlutusV4ReferenceLanguage Era DijkstraEra
Exp.DijkstraEra [Char]
"withdrawal-")
[Char]
"the withdrawal of rewards. Only native scripts or Plutus V4 scripts are supported."
BalanceTxExecUnits
ManualBalance
)
Parser
(TxMetadataJsonSchema
-> [ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser TxMetadataJsonSchema
-> Parser
([ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser TxMetadataJsonSchema
pTxMetadataJsonSchema
Parser
([ScriptFile]
-> [MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [ScriptFile]
-> Parser
([MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser ScriptFile -> Parser [ScriptFile]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many ([Char] -> Maybe [Char] -> [Char] -> Parser ScriptFile
pScriptFor [Char]
"auxiliary-script-file" Maybe [Char]
forall a. Maybe a
Nothing [Char]
"Filepath of auxiliary script(s)")
Parser
([MetadataFile]
-> Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [MetadataFile]
-> Parser
(Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser MetadataFile -> Parser [MetadataFile]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many Parser MetadataFile
pMetadataFile
Parser
(Maybe ProtocolParamsFile
-> [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser (Maybe ProtocolParamsFile)
-> Parser
([(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser ProtocolParamsFile -> Parser (Maybe ProtocolParamsFile)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional Parser ProtocolParamsFile
pProtocolParamsFile
Parser
([(VoteFile 'In, Maybe AnyNonAssetScript)]
-> [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [(VoteFile 'In, Maybe AnyNonAssetScript)]
-> Parser
([(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (VoteFile 'In, Maybe AnyNonAssetScript)
-> Parser [(VoteFile 'In, Maybe AnyNonAssetScript)]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many
( Parser AnySLanguage
-> [Char]
-> BalanceTxExecUnits
-> Parser (VoteFile 'In, Maybe AnyNonAssetScript)
pVoteFileWithPlutusReferenceLanguage
(Era DijkstraEra -> [Char] -> Parser AnySLanguage
forall era. Era era -> [Char] -> Parser AnySLanguage
pPlutusV4ReferenceLanguage Era DijkstraEra
Exp.DijkstraEra [Char]
"vote-")
[Char]
"a vote. Only native scripts or Plutus V4 scripts are supported."
BalanceTxExecUnits
ManualBalance
)
Parser
([(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [(ProposalFile 'In, Maybe AnyNonAssetScript)]
-> Parser
(Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (ProposalFile 'In, Maybe AnyNonAssetScript)
-> Parser [(ProposalFile 'In, Maybe AnyNonAssetScript)]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many
( Parser AnySLanguage
-> [Char]
-> BalanceTxExecUnits
-> Parser (ProposalFile 'In, Maybe AnyNonAssetScript)
pProposalFileWithPlutusReferenceLanguage
(Era DijkstraEra -> [Char] -> Parser AnySLanguage
forall era. Era era -> [Char] -> Parser AnySLanguage
pPlutusV4ReferenceLanguage Era DijkstraEra
Exp.DijkstraEra [Char]
"proposal-")
[Char]
"a proposal. Only native scripts or Plutus V4 scripts are supported."
BalanceTxExecUnits
ManualBalance
)
Parser
(Maybe TxCurrentTreasuryValue
-> Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser (Maybe TxCurrentTreasuryValue)
-> Parser
(Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (Maybe TxCurrentTreasuryValue)
pCurrentTreasuryValue
Parser
(Maybe TxTreasuryDonation
-> [Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser (Maybe TxTreasuryDonation)
-> Parser
([Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (Maybe TxTreasuryDonation)
pTreasuryDonation
Parser
([Guard]
-> [TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [Guard]
-> Parser
([TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser Guard -> Parser [Guard]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many Parser Guard
pGuard
Parser
([TopLevelGuard]
-> TxCborFormat
-> UnsignedSubTxFile 'Out
-> SubTransactionBuildRawCmdArgs)
-> Parser [TopLevelGuard]
-> Parser
(TxCborFormat
-> UnsignedSubTxFile 'Out -> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser TopLevelGuard -> Parser [TopLevelGuard]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many Parser TopLevelGuard
pTopLevelGuard
Parser
(TxCborFormat
-> UnsignedSubTxFile 'Out -> SubTransactionBuildRawCmdArgs)
-> Parser TxCborFormat
-> Parser (UnsignedSubTxFile 'Out -> SubTransactionBuildRawCmdArgs)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser TxCborFormat
pIsCborOutCanonical
Parser (UnsignedSubTxFile 'Out -> SubTransactionBuildRawCmdArgs)
-> Parser (UnsignedSubTxFile 'Out)
-> Parser SubTransactionBuildRawCmdArgs
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (UnsignedSubTxFile 'Out)
pUnsignedSubTxFileOut
pSubTransactionSign :: Parser SubTransactionCmds
pSubTransactionSign :: Parser SubTransactionCmds
pSubTransactionSign =
(SubTransactionSignCmdArgs -> SubTransactionCmds)
-> Parser SubTransactionSignCmdArgs -> Parser SubTransactionCmds
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap SubTransactionSignCmdArgs -> SubTransactionCmds
SubTransactionSignCmd (Parser SubTransactionSignCmdArgs -> Parser SubTransactionCmds)
-> Parser SubTransactionSignCmdArgs -> Parser SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
UnsignedSubTxFile 'In
-> [WitnessSigningData]
-> SignedSubTxFile 'Out
-> SubTransactionSignCmdArgs
SubTransactionSignCmdArgs
(UnsignedSubTxFile 'In
-> [WitnessSigningData]
-> SignedSubTxFile 'Out
-> SubTransactionSignCmdArgs)
-> Parser (UnsignedSubTxFile 'In)
-> Parser
([WitnessSigningData]
-> SignedSubTxFile 'Out -> SubTransactionSignCmdArgs)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (UnsignedSubTxFile 'In)
pUnsignedSubTxFileIn
Parser
([WitnessSigningData]
-> SignedSubTxFile 'Out -> SubTransactionSignCmdArgs)
-> Parser [WitnessSigningData]
-> Parser (SignedSubTxFile 'Out -> SubTransactionSignCmdArgs)
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
pSubTransactionSigningData
Parser (SignedSubTxFile 'Out -> SubTransactionSignCmdArgs)
-> Parser (SignedSubTxFile 'Out)
-> Parser SubTransactionSignCmdArgs
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (SignedSubTxFile 'Out)
pSignedSubTxFileOut
pSubTransactionTxId :: Parser SubTransactionCmds
pSubTransactionTxId :: Parser SubTransactionCmds
pSubTransactionTxId =
(SubTransactionTxIdCmdArgs -> SubTransactionCmds)
-> Parser SubTransactionTxIdCmdArgs -> Parser SubTransactionCmds
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap SubTransactionTxIdCmdArgs -> SubTransactionCmds
SubTransactionTxIdCmd (Parser SubTransactionTxIdCmdArgs -> Parser SubTransactionCmds)
-> Parser SubTransactionTxIdCmdArgs -> Parser SubTransactionCmds
forall a b. (a -> b) -> a -> b
$
InputSubTxFile
-> Vary '[FormatJson, FormatText, FormatYaml]
-> SubTransactionTxIdCmdArgs
SubTransactionTxIdCmdArgs
(InputSubTxFile
-> Vary '[FormatJson, FormatText, FormatYaml]
-> SubTransactionTxIdCmdArgs)
-> Parser InputSubTxFile
-> Parser
(Vary '[FormatJson, FormatText, FormatYaml]
-> SubTransactionTxIdCmdArgs)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser InputSubTxFile
pInputSubTxFile
Parser
(Vary '[FormatJson, FormatText, FormatYaml]
-> SubTransactionTxIdCmdArgs)
-> Parser (Vary '[FormatJson, FormatText, FormatYaml])
-> Parser SubTransactionTxIdCmdArgs
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [Char]
-> [Flag (Vary '[FormatJson, FormatText, FormatYaml])]
-> Parser (Vary '[FormatJson, FormatText, FormatYaml])
forall (fs :: [*]). [Char] -> [Flag (Vary fs)] -> Parser (Vary fs)
pFormatFlags
[Char]
"output"
[ Flag (Vary '[FormatJson, FormatText, FormatYaml])
forall (fs :: [*]). (FormatJson :| fs) => Flag (Vary fs)
flagFormatJson Flag (Vary '[FormatJson, FormatText, FormatYaml])
-> (Flag (Vary '[FormatJson, FormatText, FormatYaml])
-> Flag (Vary '[FormatJson, FormatText, FormatYaml]))
-> Flag (Vary '[FormatJson, FormatText, FormatYaml])
forall a b. a -> (a -> b) -> b
& Flag (Vary '[FormatJson, FormatText, FormatYaml])
-> Flag (Vary '[FormatJson, FormatText, FormatYaml])
forall a. Flag a -> Flag a
setDefault
, Flag (Vary '[FormatJson, FormatText, FormatYaml])
forall (fs :: [*]). (FormatText :| fs) => Flag (Vary fs)
flagFormatText
, Flag (Vary '[FormatJson, FormatText, FormatYaml])
forall (fs :: [*]). (FormatYaml :| fs) => Flag (Vary fs)
flagFormatYaml
]
pTopLevelGuard :: Parser TopLevelGuard
pTopLevelGuard :: Parser TopLevelGuard
pTopLevelGuard =
[Parser TopLevelGuard] -> Parser TopLevelGuard
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ VerificationKeyOrHashOrFile PaymentKey -> TopLevelGuard
TopLevelKeyGuard (VerificationKeyOrHashOrFile PaymentKey -> TopLevelGuard)
-> Parser (VerificationKeyOrHashOrFile PaymentKey)
-> Parser TopLevelGuard
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser (VerificationKeyOrHashOrFile PaymentKey)
pGuardKey [Char]
"top-level-guard" [Char]
"enclosing transaction"
, GuardScript -> Maybe ScriptDataOrFile -> TopLevelGuard
TopLevelScriptGuard (GuardScript -> Maybe ScriptDataOrFile -> TopLevelGuard)
-> Parser GuardScript
-> Parser (Maybe ScriptDataOrFile -> TopLevelGuard)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser GuardScript
pTopLevelGuardScript Parser (Maybe ScriptDataOrFile -> TopLevelGuard)
-> Parser (Maybe ScriptDataOrFile) -> Parser TopLevelGuard
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser ScriptDataOrFile -> Parser (Maybe ScriptDataOrFile)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional Parser ScriptDataOrFile
pTopLevelGuardDatum
]
pTopLevelGuardScript :: Parser GuardScript
pTopLevelGuardScript :: Parser GuardScript
pTopLevelGuardScript =
[Parser GuardScript] -> Parser GuardScript
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ ScriptHash -> GuardScript
GuardScriptHash
(ScriptHash -> GuardScript)
-> Parser ScriptHash -> Parser GuardScript
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser ScriptHash
pScriptHash
[Char]
"top-level-guard-script-hash"
[Char]
"Hash of a script required as a guard in the enclosing transaction (hex-encoded). Supply its witness in the enclosing transaction."
, ScriptFile -> GuardScript
GuardScriptFile
(ScriptFile -> GuardScript)
-> Parser ScriptFile -> Parser GuardScript
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> Maybe [Char] -> [Char] -> Parser ScriptFile
pScriptFor
[Char]
"top-level-guard-script-file"
Maybe [Char]
forall a. Maybe a
Nothing
[Char]
"Script file whose hash is required as a guard in the enclosing transaction; no witness is added here. Plutus scripts must be V4 and require a datum; native scripts must not have one."
]
pTopLevelGuardDatum :: Parser ScriptDataOrFile
pTopLevelGuardDatum :: Parser ScriptDataOrFile
pTopLevelGuardDatum =
[Char] -> [Char] -> [Char] -> Parser ScriptDataOrFile
pScriptDataOrFile
[Char]
"top-level-guard-datum"
[Char]
"Datum for the preceding script guard. Required only for Plutus scripts; must be omitted for key and native-script guards."
[Char]
"Datum file for the preceding script guard. Required only for Plutus scripts; must be omitted for key and native-script guards."
pGuard :: Parser Guard
pGuard :: Parser Guard
pGuard =
[Parser Guard] -> Parser Guard
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ VerificationKeyOrHashOrFile PaymentKey -> Guard
KeyGuard (VerificationKeyOrHashOrFile PaymentKey -> Guard)
-> Parser (VerificationKeyOrHashOrFile PaymentKey) -> Parser Guard
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser (VerificationKeyOrHashOrFile PaymentKey)
pGuardKey [Char]
"guard" [Char]
"sub-transaction"
, GuardScript -> Maybe (ScriptDataOrFile, ExecutionUnits) -> Guard
ScriptGuard (GuardScript -> Maybe (ScriptDataOrFile, ExecutionUnits) -> Guard)
-> Parser GuardScript
-> Parser (Maybe (ScriptDataOrFile, ExecutionUnits) -> Guard)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser GuardScript
pGuardScript Parser (Maybe (ScriptDataOrFile, ExecutionUnits) -> Guard)
-> Parser (Maybe (ScriptDataOrFile, ExecutionUnits))
-> Parser Guard
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (ScriptDataOrFile, ExecutionUnits)
-> Parser (Maybe (ScriptDataOrFile, ExecutionUnits))
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional Parser (ScriptDataOrFile, ExecutionUnits)
pGuardRedeemer
]
pGuardScript :: Parser GuardScript
pGuardScript :: Parser GuardScript
pGuardScript =
[Parser GuardScript] -> Parser GuardScript
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ ScriptHash -> GuardScript
GuardScriptHash
(ScriptHash -> GuardScript)
-> Parser ScriptHash -> Parser GuardScript
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser ScriptHash
pScriptHash
[Char]
"guard-script-hash"
[Char]
"Hash of a native or Plutus V4 guard script (hex-encoded). Supply the script through another witness or a reference input. When supplying only a hash, you must provide --guard-redeemer-* and --guard-execution-units if the script is Plutus; the CLI cannot determine the script type from its hash."
, ScriptFile -> GuardScript
GuardScriptFile
(ScriptFile -> GuardScript)
-> Parser ScriptFile -> Parser GuardScript
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> Maybe [Char] -> [Char] -> Parser ScriptFile
pScriptFor
[Char]
"guard-script-file"
Maybe [Char]
forall a. Maybe a
Nothing
[Char]
"Filepath of a native or Plutus V4 script whose approval the sub-transaction requires. Plutus scripts require --guard-redeemer-* and --guard-execution-units; native scripts accept neither."
]
pGuardRedeemer :: Parser (ScriptDataOrFile, ExecutionUnits)
pGuardRedeemer :: Parser (ScriptDataOrFile, ExecutionUnits)
pGuardRedeemer =
(,)
(ScriptDataOrFile
-> ExecutionUnits -> (ScriptDataOrFile, ExecutionUnits))
-> Parser ScriptDataOrFile
-> Parser (ExecutionUnits -> (ScriptDataOrFile, ExecutionUnits))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> [Char] -> Parser ScriptDataOrFile
pScriptDataOrFile
[Char]
"guard-redeemer"
[Char]
"Redeemer for the preceding script guard. Required only for Plutus V4 scripts, together with --guard-execution-units."
[Char]
"Redeemer file for the preceding script guard. Required only for Plutus V4 scripts, together with --guard-execution-units."
Parser (ExecutionUnits -> (ScriptDataOrFile, ExecutionUnits))
-> Parser ExecutionUnits
-> Parser (ScriptDataOrFile, ExecutionUnits)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [Char] -> Parser ExecutionUnits
pExecutionUnits [Char]
"guard"
pGuardKey :: String -> String -> Parser (VerificationKeyOrHashOrFile PaymentKey)
pGuardKey :: [Char] -> [Char] -> Parser (VerificationKeyOrHashOrFile PaymentKey)
pGuardKey [Char]
prefix [Char]
transaction =
[Parser (VerificationKeyOrHashOrFile PaymentKey)]
-> Parser (VerificationKeyOrHashOrFile PaymentKey)
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ VerificationKeyOrFile PaymentKey
-> VerificationKeyOrHashOrFile PaymentKey
forall keyrole.
VerificationKeyOrFile keyrole
-> VerificationKeyOrHashOrFile keyrole
VerificationKeyOrFile (VerificationKeyOrFile PaymentKey
-> VerificationKeyOrHashOrFile PaymentKey)
-> (VerificationKey PaymentKey -> VerificationKeyOrFile PaymentKey)
-> VerificationKey PaymentKey
-> VerificationKeyOrHashOrFile PaymentKey
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VerificationKey PaymentKey -> VerificationKeyOrFile PaymentKey
forall keyrole.
VerificationKey keyrole -> VerificationKeyOrFile keyrole
VerificationKeyValue (VerificationKey PaymentKey
-> VerificationKeyOrHashOrFile PaymentKey)
-> Parser (VerificationKey PaymentKey)
-> Parser (VerificationKeyOrHashOrFile PaymentKey)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (VerificationKey PaymentKey)
key
, VerificationKeyOrFile PaymentKey
-> VerificationKeyOrHashOrFile PaymentKey
forall keyrole.
VerificationKeyOrFile keyrole
-> VerificationKeyOrHashOrFile keyrole
VerificationKeyOrFile (VerificationKeyOrFile PaymentKey
-> VerificationKeyOrHashOrFile PaymentKey)
-> (File (VerificationKey ()) 'In
-> VerificationKeyOrFile PaymentKey)
-> File (VerificationKey ()) 'In
-> VerificationKeyOrHashOrFile PaymentKey
forall b c a. (b -> c) -> (a -> b) -> a -> c
. File (VerificationKey ()) 'In -> VerificationKeyOrFile PaymentKey
forall keyrole.
File (VerificationKey ()) 'In -> VerificationKeyOrFile keyrole
VerificationKeyFilePath (File (VerificationKey ()) 'In
-> VerificationKeyOrHashOrFile PaymentKey)
-> Parser (File (VerificationKey ()) 'In)
-> Parser (VerificationKeyOrHashOrFile PaymentKey)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (File (VerificationKey ()) 'In)
keyFile
, Hash PaymentKey -> VerificationKeyOrHashOrFile PaymentKey
forall keyrole. Hash keyrole -> VerificationKeyOrHashOrFile keyrole
VerificationKeyHash (Hash PaymentKey -> VerificationKeyOrHashOrFile PaymentKey)
-> Parser (Hash PaymentKey)
-> Parser (VerificationKeyOrHashOrFile PaymentKey)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (Hash PaymentKey)
keyHash
]
where
otherRoles :: [Char]
otherRoles =
[Char]
" For other signing-key roles, hash the verification key first and use --" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
prefix [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"-key-hash."
key :: Parser (VerificationKey PaymentKey)
key =
ReadM (VerificationKey PaymentKey)
-> Mod OptionFields (VerificationKey PaymentKey)
-> Parser (VerificationKey PaymentKey)
forall a. ReadM a -> Mod OptionFields a -> Parser a
Opt.option (Maybe [Char] -> ReadM (VerificationKey PaymentKey)
forall a.
SerialiseAsRawBytes (VerificationKey a) =>
Maybe [Char] -> ReadM (VerificationKey a)
rVerificationKey (Maybe [Char] -> ReadM (VerificationKey PaymentKey))
-> Maybe [Char] -> ReadM (VerificationKey PaymentKey)
forall a b. (a -> b) -> a -> b
$ [Char] -> Maybe [Char]
forall a. a -> Maybe a
Just [Char]
"Invalid guard verification key") (Mod OptionFields (VerificationKey PaymentKey)
-> Parser (VerificationKey PaymentKey))
-> Mod OptionFields (VerificationKey PaymentKey)
-> Parser (VerificationKey PaymentKey)
forall a b. (a -> b) -> a -> b
$
[Mod OptionFields (VerificationKey PaymentKey)]
-> Mod OptionFields (VerificationKey PaymentKey)
forall a. Monoid a => [a] -> a
mconcat
[ [Char] -> Mod OptionFields (VerificationKey PaymentKey)
forall (f :: * -> *) a. HasName f => [Char] -> Mod f a
Opt.long ([Char]
prefix [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"-verification-key")
, [Char] -> Mod OptionFields (VerificationKey PaymentKey)
forall (f :: * -> *) a. HasMetavar f => [Char] -> Mod f a
Opt.metavar [Char]
"STRING"
, [Char] -> Mod OptionFields (VerificationKey PaymentKey)
forall (f :: * -> *) a. [Char] -> Mod f a
Opt.help ([Char] -> Mod OptionFields (VerificationKey PaymentKey))
-> [Char] -> Mod OptionFields (VerificationKey PaymentKey)
forall a b. (a -> b) -> a -> b
$
[Char]
"Payment verification key whose signature the "
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
transaction
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" requires (hex-encoded)."
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
otherRoles
]
keyFile :: Parser (File (VerificationKey ()) 'In)
keyFile =
[Char] -> File (VerificationKey ()) 'In
forall content (direction :: FileDirection).
[Char] -> File content direction
File
([Char] -> File (VerificationKey ()) 'In)
-> Parser [Char] -> Parser (File (VerificationKey ()) 'In)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser [Char]
parseFilePath
([Char]
prefix [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"-verification-key-file")
( [Char]
"Filepath of a payment verification key whose signature the "
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
transaction
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" requires."
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
otherRoles
)
keyHash :: Parser (Hash PaymentKey)
keyHash =
ReadM (Hash PaymentKey)
-> Mod OptionFields (Hash PaymentKey) -> Parser (Hash PaymentKey)
forall a. ReadM a -> Mod OptionFields a -> Parser a
Opt.option (Parser (Hash PaymentKey) -> ReadM (Hash PaymentKey)
forall a. Parser a -> ReadM a
readerFromParsecParser Parser (Hash PaymentKey)
forall a. SerialiseAsRawBytes (Hash a) => Parser (Hash a)
parseHexHash) (Mod OptionFields (Hash PaymentKey) -> Parser (Hash PaymentKey))
-> Mod OptionFields (Hash PaymentKey) -> Parser (Hash PaymentKey)
forall a b. (a -> b) -> a -> b
$
[Mod OptionFields (Hash PaymentKey)]
-> Mod OptionFields (Hash PaymentKey)
forall a. Monoid a => [a] -> a
mconcat
[ [Char] -> Mod OptionFields (Hash PaymentKey)
forall (f :: * -> *) a. HasName f => [Char] -> Mod f a
Opt.long ([Char]
prefix [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"-key-hash")
, [Char] -> Mod OptionFields (Hash PaymentKey)
forall (f :: * -> *) a. HasMetavar f => [Char] -> Mod f a
Opt.metavar [Char]
"HASH"
, [Char] -> Mod OptionFields (Hash PaymentKey)
forall (f :: * -> *) a. [Char] -> Mod f a
Opt.help ([Char] -> Mod OptionFields (Hash PaymentKey))
-> [Char] -> Mod OptionFields (Hash PaymentKey)
forall a b. (a -> b) -> a -> b
$
[Char]
"Hash of a verification key whose signature the "
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
transaction
[Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" requires (hex-encoded). Accepts hashes from any Shelley signing-key role, including stake, DRep and committee keys."
]
pInvalidHereafterSlot :: Parser SlotNo
pInvalidHereafterSlot :: Parser SlotNo
pInvalidHereafterSlot =
(Word64 -> SlotNo) -> Parser Word64 -> Parser SlotNo
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Word64 -> SlotNo
SlotNo (Parser Word64 -> Parser SlotNo) -> Parser Word64 -> Parser SlotNo
forall a b. (a -> b) -> a -> b
$
ReadM Word64 -> Mod OptionFields Word64 -> Parser Word64
forall a. ReadM a -> Mod OptionFields a -> Parser a
Opt.option ([Char] -> ReadM Word64
forall a. (Bounded a, Integral a, Show a) => [Char] -> ReadM a
bounded [Char]
"SLOT") (Mod OptionFields Word64 -> Parser Word64)
-> Mod OptionFields Word64 -> Parser Word64
forall a b. (a -> b) -> a -> b
$
[Mod OptionFields Word64] -> Mod OptionFields Word64
forall a. Monoid a => [a] -> a
mconcat
[ [Char] -> Mod OptionFields Word64
forall (f :: * -> *) a. HasName f => [Char] -> Mod f a
Opt.long [Char]
"invalid-hereafter"
, [Char] -> Mod OptionFields Word64
forall (f :: * -> *) a. HasMetavar f => [Char] -> Mod f a
Opt.metavar [Char]
"SLOT"
, [Char] -> Mod OptionFields Word64
forall (f :: * -> *) a. [Char] -> Mod f a
Opt.help [Char]
"Time that transaction is valid until (in slots)."
]
pUnsignedSubTxFileOut :: Parser (UnsignedSubTxFile Out)
pUnsignedSubTxFileOut :: Parser (UnsignedSubTxFile 'Out)
pUnsignedSubTxFileOut =
[Char] -> UnsignedSubTxFile 'Out
forall content (direction :: FileDirection).
[Char] -> File content direction
File ([Char] -> UnsignedSubTxFile 'Out)
-> Parser [Char] -> Parser (UnsignedSubTxFile 'Out)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser [Char]
parseFilePath [Char]
"out-file" [Char]
"Output filepath of the JSON unsigned sub-transaction."
pSignedSubTxFileOut :: Parser (SignedSubTxFile Out)
pSignedSubTxFileOut :: Parser (SignedSubTxFile 'Out)
pSignedSubTxFileOut =
[Char] -> SignedSubTxFile 'Out
forall content (direction :: FileDirection).
[Char] -> File content direction
File ([Char] -> SignedSubTxFile 'Out)
-> Parser [Char] -> Parser (SignedSubTxFile 'Out)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser [Char]
parseFilePath [Char]
"out-file" [Char]
"Output filepath of the JSON signed sub-transaction."
pUnsignedSubTxFileIn :: Parser (UnsignedSubTxFile In)
pUnsignedSubTxFileIn :: Parser (UnsignedSubTxFile 'In)
pUnsignedSubTxFileIn =
[Char] -> UnsignedSubTxFile 'In
forall content (direction :: FileDirection).
[Char] -> File content direction
File ([Char] -> UnsignedSubTxFile 'In)
-> Parser [Char] -> Parser (UnsignedSubTxFile 'In)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser [Char]
parseFilePath [Char]
"sub-tx-file" [Char]
"Input filepath of the JSON unsigned sub-transaction."
pSignedSubTxFileIn :: Parser (SignedSubTxFile In)
pSignedSubTxFileIn :: Parser (SignedSubTxFile 'In)
pSignedSubTxFileIn =
[Char] -> SignedSubTxFile 'In
forall content (direction :: FileDirection).
[Char] -> File content direction
File ([Char] -> SignedSubTxFile 'In)
-> Parser [Char] -> Parser (SignedSubTxFile 'In)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser [Char]
parseFilePath [Char]
"signed-sub-tx-file" [Char]
"Input filepath of the JSON signed sub-transaction."
pSubTransactionSigningData :: Parser WitnessSigningData
pSubTransactionSigningData :: Parser WitnessSigningData
pSubTransactionSigningData =
(SigningKeyFile 'In
-> Maybe (Address ByronAddr) -> WitnessSigningData
`KeyWitnessSigningData` Maybe (Address ByronAddr)
forall a. Maybe a
Nothing) (SigningKeyFile 'In -> WitnessSigningData)
-> Parser (SigningKeyFile 'In) -> Parser WitnessSigningData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (SigningKeyFile 'In)
pSigningKeyFileIn
pInputSubTxFile :: Parser InputSubTxFile
pInputSubTxFile :: Parser InputSubTxFile
pInputSubTxFile =
[Parser InputSubTxFile] -> Parser InputSubTxFile
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ UnsignedSubTxFile 'In -> InputSubTxFile
InputUnsignedSubTxFile (UnsignedSubTxFile 'In -> InputSubTxFile)
-> Parser (UnsignedSubTxFile 'In) -> Parser InputSubTxFile
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (UnsignedSubTxFile 'In)
pUnsignedSubTxFileIn
, SignedSubTxFile 'In -> InputSubTxFile
InputSignedSubTxFile (SignedSubTxFile 'In -> InputSubTxFile)
-> Parser (SignedSubTxFile 'In) -> Parser InputSubTxFile
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser (SignedSubTxFile 'In)
pSignedSubTxFileIn
]
pSubTransactionFiles :: forall era. Exp.IsEra era => Parser [SignedSubTxFile In]
pSubTransactionFiles :: forall era. IsEra era => Parser [SignedSubTxFile 'In]
pSubTransactionFiles = case forall era. IsEra era => Era era
Exp.useEra @era of
Era era
Exp.ConwayEra -> [SignedSubTxFile 'In] -> Parser [SignedSubTxFile 'In]
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure []
Era era
Exp.DijkstraEra ->
Parser (SignedSubTxFile 'In) -> Parser [SignedSubTxFile 'In]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many (Parser (SignedSubTxFile 'In) -> Parser [SignedSubTxFile 'In])
-> Parser (SignedSubTxFile 'In) -> Parser [SignedSubTxFile 'In]
forall a b. (a -> b) -> a -> b
$
[Char] -> SignedSubTxFile 'In
forall content (direction :: FileDirection).
[Char] -> File content direction
File
([Char] -> SignedSubTxFile 'In)
-> Parser [Char] -> Parser (SignedSubTxFile 'In)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [Char] -> Parser [Char]
parseFilePath
[Char]
"signed-sub-tx-file"
[Char]
"Filepath of a signed sub-transaction to embed in this transaction (zero or more)."