{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
module Cardano.CLI.EraBased.StakeAddress.Run
( runStakeAddressCmds
, runStakeAddressBuildCmd
, runStakeAddressKeyGenCmd
, runStakeAddressKeyHashCmd
, runStakeAddressStakeDelegationCertificateCmd
, runStakeAddressDeregistrationCertificateCmd
, runStakeAddressRegistrationCertificateCmd
, runStakeAddressRegistrationAndDelegationCertificateCmd
, runStakeAddressRegistrationStakeAndVoteDelegationCertificateCmd
)
where
import Cardano.Api hiding (makeStakeAddressRegistrationCertificate)
import Cardano.Api.Experimental (obtainCommonConstraints)
import Cardano.Api.Experimental qualified as Exp
import Cardano.Api.Ledger qualified as L
import Cardano.CLI.Compatible.Exception
import Cardano.CLI.EraBased.StakeAddress.Command
import Cardano.CLI.EraIndependent.Key.Run qualified as Key
import Cardano.CLI.Orphan ()
import Cardano.CLI.Read
import Cardano.CLI.Type.Common
import Cardano.CLI.Type.Governance
import Cardano.CLI.Type.Key
import RIO
import Data.ByteString.Char8 qualified as BS
import Data.Text.IO qualified as Text
import Vary (Vary)
import Vary qualified
runStakeAddressCmds
:: ()
=> forall era e
. StakeAddressCmds era
-> CIO e ()
runStakeAddressCmds :: forall era e. StakeAddressCmds era -> CIO e ()
runStakeAddressCmds = \case
StakeAddressKeyGenCmd Vary '[FormatBech32, FormatTextEnvelope]
fmt VerificationKeyFile 'Out
vk SigningKeyFile 'Out
sk ->
RIO e (VerificationKey StakeKey, SigningKey StakeKey) -> RIO e ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (RIO e (VerificationKey StakeKey, SigningKey StakeKey) -> RIO e ())
-> RIO e (VerificationKey StakeKey, SigningKey StakeKey)
-> RIO e ()
forall a b. (a -> b) -> a -> b
$ Vary '[FormatBech32, FormatTextEnvelope]
-> VerificationKeyFile 'Out
-> SigningKeyFile 'Out
-> CIO e (VerificationKey StakeKey, SigningKey StakeKey)
forall e.
Vary '[FormatBech32, FormatTextEnvelope]
-> VerificationKeyFile 'Out
-> SigningKeyFile 'Out
-> CIO e (VerificationKey StakeKey, SigningKey StakeKey)
runStakeAddressKeyGenCmd Vary '[FormatBech32, FormatTextEnvelope]
fmt VerificationKeyFile 'Out
vk SigningKeyFile 'Out
sk
StakeAddressKeyHashCmd VerificationKeyOrFile StakeKey
vk Maybe (File () 'Out)
mOutputFp ->
VerificationKeyOrFile StakeKey -> Maybe (File () 'Out) -> CIO e ()
forall e.
VerificationKeyOrFile StakeKey -> Maybe (File () 'Out) -> CIO e ()
runStakeAddressKeyHashCmd VerificationKeyOrFile StakeKey
vk Maybe (File () 'Out)
mOutputFp
StakeAddressBuildCmd StakeVerifier
stakeVerifier NetworkId
nw Maybe (File () 'Out)
mOutputFp ->
StakeVerifier -> NetworkId -> Maybe (File () 'Out) -> CIO e ()
forall e.
StakeVerifier -> NetworkId -> Maybe (File () 'Out) -> CIO e ()
runStakeAddressBuildCmd StakeVerifier
stakeVerifier NetworkId
nw Maybe (File () 'Out)
mOutputFp
StakeAddressRegistrationCertificateCmd Era era
era StakeIdentifier
stakeIdentifier Coin
mDeposit File () 'Out
outputFp ->
Era era -> StakeIdentifier -> Coin -> File () 'Out -> CIO e ()
forall era e.
Era era -> StakeIdentifier -> Coin -> File () 'Out -> CIO e ()
runStakeAddressRegistrationCertificateCmd Era era
era StakeIdentifier
stakeIdentifier Coin
mDeposit File () 'Out
outputFp
StakeAddressStakeDelegationCertificateCmd
Era era
era
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
stkPoolVerKeyHashOrFp
File () 'Out
outputFp ->
Era era -> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall era a. Era era -> (EraCommonConstraints era => a) -> a
Exp.obtainCommonConstraints Era era
era ((EraCommonConstraints era => RIO e ()) -> RIO e ())
-> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> File () 'Out
-> CIO e ()
forall era e.
IsEra era =>
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> File () 'Out
-> CIO e ()
runStakeAddressStakeDelegationCertificateCmd
Era era
era
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
stkPoolVerKeyHashOrFp
File () 'Out
outputFp
StakeAddressStakeAndVoteDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
stakePoolVerificationKeyHashSource
VoteDelegationTarget
voteDelegationTarget
File () 'Out
outputFp ->
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> File () 'Out
-> CIO e ()
forall era e.
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> File () 'Out
-> CIO e ()
runStakeAddressStakeAndVoteDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
stakePoolVerificationKeyHashSource
VoteDelegationTarget
voteDelegationTarget
File () 'Out
outputFp
StakeAddressVoteDelegationCertificateCmd Era era
w StakeIdentifier
stakeIdentifier VoteDelegationTarget
voteDelegationTarget File () 'Out
outputFp ->
Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> File () 'Out
-> CIO e ()
forall era e.
Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> File () 'Out
-> CIO e ()
runStakeAddressVoteDelegationCertificateCmd Era era
w StakeIdentifier
stakeIdentifier VoteDelegationTarget
voteDelegationTarget File () 'Out
outputFp
StakeAddressDeregistrationCertificateCmd Era era
era StakeIdentifier
stakeIdentifier Coin
deposit File () 'Out
outputFp ->
Era era -> StakeIdentifier -> Coin -> File () 'Out -> CIO e ()
forall era e.
Era era -> StakeIdentifier -> Coin -> File () 'Out -> CIO e ()
runStakeAddressDeregistrationCertificateCmd Era era
era StakeIdentifier
stakeIdentifier Coin
deposit File () 'Out
outputFp
StakeAddressRegistrationAndDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
poolVKeyOrHashOrFile
Coin
deposit
File () 'Out
outFp ->
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> Coin
-> File () 'Out
-> CIO e ()
forall era e.
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> Coin
-> File () 'Out
-> CIO e ()
runStakeAddressRegistrationAndDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
poolVKeyOrHashOrFile
Coin
deposit
File () 'Out
outFp
StakeAddressRegistrationAndVoteDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
VoteDelegationTarget
voteDelegationTarget
Coin
keydeposit
File () 'Out
outFp ->
Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> Coin
-> File () 'Out
-> CIO e ()
forall era e.
Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> Coin
-> File () 'Out
-> CIO e ()
runStakeAddressRegistrationAndVoteDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
VoteDelegationTarget
voteDelegationTarget
Coin
keydeposit
File () 'Out
outFp
StakeAddressRegistrationStakeAndVoteDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
poolVKeyOrHashOrFile
VoteDelegationTarget
voteDelegationTarget
Coin
keydeposit
File () 'Out
outFp ->
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> Coin
-> File () 'Out
-> CIO e ()
forall era e.
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> Coin
-> File () 'Out
-> CIO e ()
runStakeAddressRegistrationStakeAndVoteDelegationCertificateCmd
Era era
w
StakeIdentifier
stakeIdentifier
StakePoolKeyHashSource
poolVKeyOrHashOrFile
VoteDelegationTarget
voteDelegationTarget
Coin
keydeposit
File () 'Out
outFp
runStakeAddressKeyGenCmd
:: Vary [FormatBech32, FormatTextEnvelope]
-> VerificationKeyFile Out
-> SigningKeyFile Out
-> CIO e (VerificationKey StakeKey, SigningKey StakeKey)
runStakeAddressKeyGenCmd :: forall e.
Vary '[FormatBech32, FormatTextEnvelope]
-> VerificationKeyFile 'Out
-> SigningKeyFile 'Out
-> CIO e (VerificationKey StakeKey, SigningKey StakeKey)
runStakeAddressKeyGenCmd Vary '[FormatBech32, FormatTextEnvelope]
fmt VerificationKeyFile 'Out
vkFp SigningKeyFile 'Out
skFp = do
let skeyDesc :: TextEnvelopeDescr
skeyDesc = TextEnvelopeDescr
"Stake Signing Key"
SigningKey StakeKey
skey <- AsType StakeKey -> RIO e (SigningKey StakeKey)
forall (m :: * -> *) keyrole.
(MonadIO m, Key keyrole) =>
AsType keyrole -> m (SigningKey keyrole)
generateSigningKey AsType StakeKey
AsStakeKey
let vkey :: VerificationKey StakeKey
vkey = SigningKey StakeKey -> VerificationKey StakeKey
forall keyrole.
(Key keyrole, HasTypeProxy keyrole) =>
SigningKey keyrole -> VerificationKey keyrole
getVerificationKey SigningKey StakeKey
skey
RIO e (Either (FileError Any) ()) -> RIO e ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (RIO e (Either (FileError Any) ()) -> RIO e ())
-> RIO e (Either (FileError Any) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
Vary '[FormatBech32, FormatTextEnvelope]
fmt
Vary '[FormatBech32, FormatTextEnvelope]
-> (Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> RIO e (Either (FileError Any) ())
forall a b. a -> (a -> b) -> b
& ( (Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a. a -> a
id
((Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> ((Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FormatBech32 -> RIO e (Either (FileError Any) ()))
-> (Vary '[FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a b (l :: [*]).
(a -> b) -> (Vary l -> b) -> Vary (a : l) -> b
Vary.on
( \FormatBech32
FormatBech32 ->
SigningKeyFile 'Out -> Text -> RIO e (Either (FileError Any) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> Text -> m (Either (FileError e) ())
writeTextFile SigningKeyFile 'Out
skFp (Text -> RIO e (Either (FileError Any) ()))
-> Text -> RIO e (Either (FileError Any) ())
forall a b. (a -> b) -> a -> b
$ SigningKey StakeKey -> Text
forall a. SerialiseAsBech32 a => a -> Text
serialiseToBech32 SigningKey StakeKey
skey
)
((Vary '[FormatTextEnvelope] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> ((Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatTextEnvelope] -> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FormatTextEnvelope -> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a b (l :: [*]).
(a -> b) -> (Vary l -> b) -> Vary (a : l) -> b
Vary.on
( \FormatTextEnvelope
FormatTextEnvelope ->
SigningKeyFile 'Out
-> ByteString -> RIO e (Either (FileError Any) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile SigningKeyFile 'Out
skFp (ByteString -> RIO e (Either (FileError Any) ()))
-> ByteString -> RIO e (Either (FileError Any) ())
forall a b. (a -> b) -> a -> b
$ Maybe TextEnvelopeDescr -> SigningKey StakeKey -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (TextEnvelopeDescr -> Maybe TextEnvelopeDescr
forall a. a -> Maybe a
Just TextEnvelopeDescr
skeyDesc) SigningKey StakeKey
skey
)
((Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a b. (a -> b) -> a -> b
$ Vary '[] -> RIO e (Either (FileError Any) ())
forall anything. Vary '[] -> anything
Vary.exhaustiveCase
)
RIO e (Either (FileError Any) ()) -> RIO e ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (RIO e (Either (FileError Any) ()) -> RIO e ())
-> RIO e (Either (FileError Any) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
Vary '[FormatBech32, FormatTextEnvelope]
fmt
Vary '[FormatBech32, FormatTextEnvelope]
-> (Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> RIO e (Either (FileError Any) ())
forall a b. a -> (a -> b) -> b
& ( (Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a. a -> a
id
((Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> ((Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FormatBech32 -> RIO e (Either (FileError Any) ()))
-> (Vary '[FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a b (l :: [*]).
(a -> b) -> (Vary l -> b) -> Vary (a : l) -> b
Vary.on
( \FormatBech32
FormatBech32 ->
VerificationKeyFile 'Out
-> Text -> RIO e (Either (FileError Any) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> Text -> m (Either (FileError e) ())
writeTextFile VerificationKeyFile 'Out
vkFp (Text -> RIO e (Either (FileError Any) ()))
-> Text -> RIO e (Either (FileError Any) ())
forall a b. (a -> b) -> a -> b
$ VerificationKey StakeKey -> Text
forall a. SerialiseAsBech32 a => a -> Text
serialiseToBech32 VerificationKey StakeKey
vkey
)
((Vary '[FormatTextEnvelope] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> ((Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatTextEnvelope] -> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FormatTextEnvelope -> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a b (l :: [*]).
(a -> b) -> (Vary l -> b) -> Vary (a : l) -> b
Vary.on
( \FormatTextEnvelope
FormatTextEnvelope ->
VerificationKeyFile 'Out
-> ByteString -> RIO e (Either (FileError Any) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile VerificationKeyFile 'Out
vkFp (ByteString -> RIO e (Either (FileError Any) ()))
-> ByteString -> RIO e (Either (FileError Any) ())
forall a b. (a -> b) -> a -> b
$ Maybe TextEnvelopeDescr -> VerificationKey StakeKey -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (TextEnvelopeDescr -> Maybe TextEnvelopeDescr
forall a. a -> Maybe a
Just TextEnvelopeDescr
Key.stakeVkeyDesc) VerificationKey StakeKey
vkey
)
((Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ()))
-> (Vary '[] -> RIO e (Either (FileError Any) ()))
-> Vary '[FormatBech32, FormatTextEnvelope]
-> RIO e (Either (FileError Any) ())
forall a b. (a -> b) -> a -> b
$ Vary '[] -> RIO e (Either (FileError Any) ())
forall anything. Vary '[] -> anything
Vary.exhaustiveCase
)
(VerificationKey StakeKey, SigningKey StakeKey)
-> RIO e (VerificationKey StakeKey, SigningKey StakeKey)
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (VerificationKey StakeKey
vkey, SigningKey StakeKey
skey)
runStakeAddressKeyHashCmd
:: ()
=> VerificationKeyOrFile StakeKey
-> Maybe (File () Out)
-> CIO e ()
runStakeAddressKeyHashCmd :: forall e.
VerificationKeyOrFile StakeKey -> Maybe (File () 'Out) -> CIO e ()
runStakeAddressKeyHashCmd VerificationKeyOrFile StakeKey
stakeVerKeyOrFile Maybe (File () 'Out)
mOutputFp = do
VerificationKey StakeKey
vkey <-
VerificationKeyOrFile StakeKey -> CIO e (VerificationKey StakeKey)
forall keyrole e.
(HasTextEnvelope (VerificationKey keyrole),
SerialiseAsBech32 (VerificationKey keyrole)) =>
VerificationKeyOrFile keyrole -> CIO e (VerificationKey keyrole)
readVerificationKeyOrFile VerificationKeyOrFile StakeKey
stakeVerKeyOrFile
let hexKeyHash :: ByteString
hexKeyHash = Hash StakeKey -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytesHex (VerificationKey StakeKey -> Hash StakeKey
forall keyrole.
Key keyrole =>
VerificationKey keyrole -> Hash keyrole
verificationKeyHash VerificationKey StakeKey
vkey)
case Maybe (File () 'Out)
mOutputFp of
Just (File FilePath
fpath) -> IO () -> RIO e ()
forall a. IO a -> RIO e a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> RIO e ()) -> IO () -> RIO e ()
forall a b. (a -> b) -> a -> b
$ FilePath -> ByteString -> IO ()
BS.writeFile FilePath
fpath ByteString
hexKeyHash
Maybe (File () 'Out)
Nothing -> IO () -> RIO e ()
forall a. IO a -> RIO e a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> RIO e ()) -> IO () -> RIO e ()
forall a b. (a -> b) -> a -> b
$ ByteString -> IO ()
BS.putStrLn ByteString
hexKeyHash
runStakeAddressBuildCmd
:: ()
=> StakeVerifier
-> NetworkId
-> Maybe (File () Out)
-> CIO e ()
runStakeAddressBuildCmd :: forall e.
StakeVerifier -> NetworkId -> Maybe (File () 'Out) -> CIO e ()
runStakeAddressBuildCmd StakeVerifier
stakeVerifier NetworkId
network Maybe (File () 'Out)
mOutputFp = do
StakeAddress
stakeAddr <-
NetworkId -> StakeVerifier -> CIO e StakeAddress
forall e. NetworkId -> StakeVerifier -> CIO e StakeAddress
getStakeAddressFromVerifier NetworkId
network StakeVerifier
stakeVerifier
let stakeAddrText :: Text
stakeAddrText = StakeAddress -> Text
forall addr. SerialiseAddress addr => addr -> Text
serialiseAddress StakeAddress
stakeAddr
IO () -> RIO e ()
forall a. IO a -> RIO e a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> RIO e ()) -> IO () -> RIO e ()
forall a b. (a -> b) -> a -> b
$
case Maybe (File () 'Out)
mOutputFp of
Just (File FilePath
fpath) -> FilePath -> Text -> IO ()
Text.writeFile FilePath
fpath Text
stakeAddrText
Maybe (File () 'Out)
Nothing -> Text -> IO ()
Text.putStrLn Text
stakeAddrText
runStakeAddressRegistrationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> Lovelace
-> File () Out
-> CIO e ()
runStakeAddressRegistrationCertificateCmd :: forall era e.
Era era -> StakeIdentifier -> Coin -> File () 'Out -> CIO e ()
runStakeAddressRegistrationCertificateCmd Era era
era StakeIdentifier
stakeIdentifier Coin
deposit File () 'Out
oFp = do
StakeCredential
stakeCred <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier
StakeIdentifier
stakeIdentifier
let regCert :: Certificate (LedgerEra era)
regCert =
Era era
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era))
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
StakeCredential -> Coin -> Certificate (LedgerEra era)
forall era.
IsEra era =>
StakeCredential -> Coin -> Certificate (LedgerEra era)
Exp.makeStakeAddressRegistrationCertificate StakeCredential
stakeCred Coin
deposit
:: Exp.Certificate (Exp.LedgerEra era)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
oFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Era era -> (EraCommonConstraints era => ByteString) -> ByteString
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => ByteString) -> ByteString)
-> (EraCommonConstraints era => ByteString) -> ByteString
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (TextEnvelopeDescr -> Maybe TextEnvelopeDescr
forall a. a -> Maybe a
Just TextEnvelopeDescr
regCertDesc) Certificate (LedgerEra era)
regCert
where
regCertDesc :: TextEnvelopeDescr
regCertDesc :: TextEnvelopeDescr
regCertDesc = TextEnvelopeDescr
"Stake Address Registration Certificate"
runStakeAddressStakeDelegationCertificateCmd
:: forall era e
. Exp.IsEra era
=> Exp.Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> File () Out
-> CIO e ()
runStakeAddressStakeDelegationCertificateCmd :: forall era e.
IsEra era =>
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> File () 'Out
-> CIO e ()
runStakeAddressStakeDelegationCertificateCmd Era era
era StakeIdentifier
stakeVerifier StakePoolKeyHashSource
poolVKeyOrHashOrFile File () 'Out
outFp =
Era era -> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => RIO e ()) -> RIO e ())
-> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$ do
Hash StakePoolKey
poolStakeVKeyHash <- StakePoolKeyHashSource -> RIO e (Hash StakePoolKey)
forall (m :: * -> *).
MonadIO m =>
StakePoolKeyHashSource -> m (Hash StakePoolKey)
getHashFromStakePoolKeyHashSource StakePoolKeyHashSource
poolVKeyOrHashOrFile
StakeCredential
stakeCred <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
let Certificate (LedgerEra era)
certificate :: Exp.Certificate (Exp.LedgerEra era) = StakeCredential -> Hash StakePoolKey -> Certificate (LedgerEra era)
forall era.
IsEra era =>
StakeCredential -> Hash StakePoolKey -> Certificate (LedgerEra era)
createStakeDelegationCertificate StakeCredential
stakeCred Hash StakePoolKey
poolStakeVKeyHash
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
outFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (forall a. a -> Maybe a
Just @TextEnvelopeDescr TextEnvelopeDescr
"Stake Delegation Certificate") Certificate (LedgerEra era)
certificate
runStakeAddressStakeAndVoteDelegationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> File () Out
-> CIO e ()
runStakeAddressStakeAndVoteDelegationCertificateCmd :: forall era e.
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> File () 'Out
-> CIO e ()
runStakeAddressStakeAndVoteDelegationCertificateCmd Era era
w StakeIdentifier
stakeVerifier StakePoolKeyHashSource
poolVKeyOrHashOrFile VoteDelegationTarget
voteDelegationTarget File () 'Out
outFp = do
StakePoolKeyHash KeyHash 'StakePool
poolStakeVKeyHash <- StakePoolKeyHashSource -> RIO e (Hash StakePoolKey)
forall (m :: * -> *).
MonadIO m =>
StakePoolKeyHashSource -> m (Hash StakePoolKey)
getHashFromStakePoolKeyHashSource StakePoolKeyHashSource
poolVKeyOrHashOrFile
StakeCredential
stakeCredential <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
DRep
drep <-
VoteDelegationTarget -> CIO e DRep
forall e. VoteDelegationTarget -> CIO e DRep
readVoteDelegationTarget VoteDelegationTarget
voteDelegationTarget
let delegatee :: Delegatee
delegatee = KeyHash 'StakePool -> DRep -> Delegatee
L.DelegStakeVote KeyHash 'StakePool
poolStakeVKeyHash DRep
drep
Certificate (LedgerEra era)
certificate :: Exp.Certificate (Exp.LedgerEra era) <-
Certificate (LedgerEra era) -> RIO e (Certificate (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (Certificate (LedgerEra era)
-> RIO e (Certificate (LedgerEra era)))
-> Certificate (LedgerEra era)
-> RIO e (Certificate (LedgerEra era))
forall a b. (a -> b) -> a -> b
$
Era era
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w ((EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era))
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
TxCert (LedgerEra era) -> Certificate (LedgerEra era)
forall era. EraTxCert era => TxCert era -> Certificate era
Exp.Certificate (TxCert (LedgerEra era) -> Certificate (LedgerEra era))
-> TxCert (LedgerEra era) -> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
StakeCredential -> Delegatee -> TxCert (LedgerEra era)
forall era.
ConwayEraTxCert era =>
StakeCredential -> Delegatee -> TxCert era
L.mkDelegTxCert (StakeCredential -> StakeCredential
toShelleyStakeCredential StakeCredential
stakeCredential) Delegatee
delegatee
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
outFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Era era -> (EraCommonConstraints era => ByteString) -> ByteString
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w ((EraCommonConstraints era => ByteString) -> ByteString)
-> (EraCommonConstraints era => ByteString) -> ByteString
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (forall a. a -> Maybe a
Just @TextEnvelopeDescr TextEnvelopeDescr
"Stake and Vote Delegation Certificate") Certificate (LedgerEra era)
certificate
runStakeAddressVoteDelegationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> File () Out
-> CIO e ()
runStakeAddressVoteDelegationCertificateCmd :: forall era e.
Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> File () 'Out
-> CIO e ()
runStakeAddressVoteDelegationCertificateCmd Era era
w StakeIdentifier
stakeVerifier VoteDelegationTarget
voteDelegationTarget File () 'Out
outFp = do
StakeCredential
stakeCredential <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
DRep
drep <-
VoteDelegationTarget -> CIO e DRep
forall e. VoteDelegationTarget -> CIO e DRep
readVoteDelegationTarget VoteDelegationTarget
voteDelegationTarget
let delegatee :: Delegatee
delegatee = DRep -> Delegatee
L.DelegVote DRep
drep
let Certificate (LedgerEra era)
certificate :: Exp.Certificate (Exp.LedgerEra era) =
Era era
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w ((EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era))
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
TxCert (LedgerEra era) -> Certificate (LedgerEra era)
forall era. EraTxCert era => TxCert era -> Certificate era
Exp.Certificate (TxCert (LedgerEra era) -> Certificate (LedgerEra era))
-> TxCert (LedgerEra era) -> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
StakeCredential -> Delegatee -> TxCert (LedgerEra era)
forall era.
ConwayEraTxCert era =>
StakeCredential -> Delegatee -> TxCert era
L.mkDelegTxCert (StakeCredential -> StakeCredential
toShelleyStakeCredential StakeCredential
stakeCredential) Delegatee
delegatee
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ())
(IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$ File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile
File () 'Out
outFp
(ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$ Era era -> (EraCommonConstraints era => ByteString) -> ByteString
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w
((EraCommonConstraints era => ByteString) -> ByteString)
-> (EraCommonConstraints era => ByteString) -> ByteString
forall a b. (a -> b) -> a -> b
$ Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (forall a. a -> Maybe a
Just @TextEnvelopeDescr TextEnvelopeDescr
"Vote Delegation Certificate") Certificate (LedgerEra era)
certificate
createStakeDelegationCertificate
:: forall era
. Exp.IsEra era
=> StakeCredential
-> Hash StakePoolKey
-> Exp.Certificate (Exp.LedgerEra era)
createStakeDelegationCertificate :: forall era.
IsEra era =>
StakeCredential -> Hash StakePoolKey -> Certificate (LedgerEra era)
createStakeDelegationCertificate StakeCredential
stakeCredential (StakePoolKeyHash KeyHash 'StakePool
poolStakeVKeyHash) = do
let w :: Era era
w = Era era -> Era era
forall era. Era era -> Era era
forall a (f :: a -> *) (g :: a -> *) (era :: a).
Convert f g =>
f era -> g era
convert (Era era -> Era era) -> Era era -> Era era
forall a b. (a -> b) -> a -> b
$ forall era. IsEra era => Era era
Exp.useEra @era
Era era
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w ((EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era))
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
TxCert (LedgerEra era) -> Certificate (LedgerEra era)
forall era. EraTxCert era => TxCert era -> Certificate era
Exp.Certificate (TxCert (LedgerEra era) -> Certificate (LedgerEra era))
-> TxCert (LedgerEra era) -> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
StakeCredential -> Delegatee -> TxCert (LedgerEra era)
forall era.
ConwayEraTxCert era =>
StakeCredential -> Delegatee -> TxCert era
L.mkDelegTxCert (StakeCredential -> StakeCredential
toShelleyStakeCredential StakeCredential
stakeCredential) (KeyHash 'StakePool -> Delegatee
L.DelegStake KeyHash 'StakePool
poolStakeVKeyHash)
runStakeAddressDeregistrationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> Lovelace
-> File () Out
-> CIO e ()
runStakeAddressDeregistrationCertificateCmd :: forall era e.
Era era -> StakeIdentifier -> Coin -> File () 'Out -> CIO e ()
runStakeAddressDeregistrationCertificateCmd Era era
era StakeIdentifier
stakeVerifier Coin
deposit File () 'Out
oFp = do
StakeCredential
stakeCred <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
let deRegCert :: Certificate (LedgerEra era)
deRegCert =
Era era
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era))
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
StakeCredential -> Coin -> Certificate (LedgerEra era)
forall era.
IsEra era =>
StakeCredential -> Coin -> Certificate (LedgerEra era)
Exp.makeStakeAddressUnregistrationCertificate StakeCredential
stakeCred Coin
deposit
:: Exp.Certificate (Exp.LedgerEra era)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
oFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Era era -> (EraCommonConstraints era => ByteString) -> ByteString
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => ByteString) -> ByteString)
-> (EraCommonConstraints era => ByteString) -> ByteString
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON (TextEnvelopeDescr -> Maybe TextEnvelopeDescr
forall a. a -> Maybe a
Just TextEnvelopeDescr
deregCertDesc) Certificate (LedgerEra era)
deRegCert
where
deregCertDesc :: TextEnvelopeDescr
deregCertDesc :: TextEnvelopeDescr
deregCertDesc = TextEnvelopeDescr
"Stake Address Deregistration Certificate"
runStakeAddressRegistrationAndDelegationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> Lovelace
-> File () Out
-> CIO e ()
runStakeAddressRegistrationAndDelegationCertificateCmd :: forall era e.
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> Coin
-> File () 'Out
-> CIO e ()
runStakeAddressRegistrationAndDelegationCertificateCmd Era era
era StakeIdentifier
stakeVerifier StakePoolKeyHashSource
poolVKeyOrHashOrFile Coin
deposit File () 'Out
outFp =
do
StakePoolKeyHash KeyHash 'StakePool
poolStakeVKeyHash <- StakePoolKeyHashSource -> RIO e (Hash StakePoolKey)
forall (m :: * -> *).
MonadIO m =>
StakePoolKeyHashSource -> m (Hash StakePoolKey)
getHashFromStakePoolKeyHashSource StakePoolKeyHashSource
poolVKeyOrHashOrFile
StakeCredential
stakeCred <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
let delegatee :: Delegatee
delegatee = KeyHash 'StakePool -> Delegatee
L.DelegStake KeyHash 'StakePool
poolStakeVKeyHash
let certificate :: Certificate (LedgerEra era)
certificate =
Era era
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era))
-> (EraCommonConstraints era => Certificate (LedgerEra era))
-> Certificate (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
StakeCredential -> Delegatee -> Coin -> Certificate (LedgerEra era)
forall era.
IsEra era =>
StakeCredential -> Delegatee -> Coin -> Certificate (LedgerEra era)
Exp.makeStakeAddressAndDRepDelegationCertificate StakeCredential
stakeCred Delegatee
delegatee Coin
deposit
:: Exp.Certificate (Exp.LedgerEra era)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
outFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Era era -> (EraCommonConstraints era => ByteString) -> ByteString
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => ByteString) -> ByteString)
-> (EraCommonConstraints era => ByteString) -> ByteString
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON
(forall a. a -> Maybe a
Just @TextEnvelopeDescr TextEnvelopeDescr
"Stake address registration and stake delegation certificate")
Certificate (LedgerEra era)
certificate
runStakeAddressRegistrationAndVoteDelegationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> Lovelace
-> File () Out
-> CIO e ()
runStakeAddressRegistrationAndVoteDelegationCertificateCmd :: forall era e.
Era era
-> StakeIdentifier
-> VoteDelegationTarget
-> Coin
-> File () 'Out
-> CIO e ()
runStakeAddressRegistrationAndVoteDelegationCertificateCmd Era era
w StakeIdentifier
stakeVerifier VoteDelegationTarget
voteDelegationTarget Coin
keydeposit File () 'Out
outFp =
Era era -> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w ((EraCommonConstraints era => RIO e ()) -> RIO e ())
-> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$ do
StakeCredential
stakeCred <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
DRep
drep <-
VoteDelegationTarget -> CIO e DRep
forall e. VoteDelegationTarget -> CIO e DRep
readVoteDelegationTarget VoteDelegationTarget
voteDelegationTarget
let delegatee :: Delegatee
delegatee = DRep -> Delegatee
L.DelegVote DRep
drep
let certificate :: Certificate (LedgerEra era)
certificate =
StakeCredential -> Delegatee -> Coin -> Certificate (LedgerEra era)
forall era.
IsEra era =>
StakeCredential -> Delegatee -> Coin -> Certificate (LedgerEra era)
Exp.makeStakeAddressAndDRepDelegationCertificate StakeCredential
stakeCred Delegatee
delegatee Coin
keydeposit
:: Exp.Certificate (Exp.LedgerEra era)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
outFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON
(forall a. a -> Maybe a
Just @TextEnvelopeDescr TextEnvelopeDescr
"Stake address registration and vote delegation certificate")
Certificate (LedgerEra era)
certificate
runStakeAddressRegistrationStakeAndVoteDelegationCertificateCmd
:: forall era e
. Exp.Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> Lovelace
-> File () Out
-> CIO e ()
runStakeAddressRegistrationStakeAndVoteDelegationCertificateCmd :: forall era e.
Era era
-> StakeIdentifier
-> StakePoolKeyHashSource
-> VoteDelegationTarget
-> Coin
-> File () 'Out
-> CIO e ()
runStakeAddressRegistrationStakeAndVoteDelegationCertificateCmd Era era
w StakeIdentifier
stakeVerifier StakePoolKeyHashSource
poolVKeyOrHashOrFile VoteDelegationTarget
voteDelegationTarget Coin
keydeposit File () 'Out
outFp =
Era era -> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
w ((EraCommonConstraints era => RIO e ()) -> RIO e ())
-> (EraCommonConstraints era => RIO e ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$ do
StakePoolKeyHash KeyHash 'StakePool
poolStakeVKeyHash <- StakePoolKeyHashSource -> RIO e (Hash StakePoolKey)
forall (m :: * -> *).
MonadIO m =>
StakePoolKeyHashSource -> m (Hash StakePoolKey)
getHashFromStakePoolKeyHashSource StakePoolKeyHashSource
poolVKeyOrHashOrFile
StakeCredential
stakeCred <-
StakeIdentifier -> CIO e StakeCredential
forall e. StakeIdentifier -> CIO e StakeCredential
getStakeCredentialFromIdentifier StakeIdentifier
stakeVerifier
DRep
drep <-
VoteDelegationTarget -> CIO e DRep
forall e. VoteDelegationTarget -> CIO e DRep
readVoteDelegationTarget VoteDelegationTarget
voteDelegationTarget
let delegatee :: Delegatee
delegatee = KeyHash 'StakePool -> DRep -> Delegatee
L.DelegStakeVote KeyHash 'StakePool
poolStakeVKeyHash DRep
drep
let certificate :: Certificate (LedgerEra era)
certificate =
StakeCredential -> Delegatee -> Coin -> Certificate (LedgerEra era)
forall era.
IsEra era =>
StakeCredential -> Delegatee -> Coin -> Certificate (LedgerEra era)
Exp.makeStakeAddressAndDRepDelegationCertificate StakeCredential
stakeCred Delegatee
delegatee Coin
keydeposit
:: Exp.Certificate (Exp.LedgerEra era)
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
IO (Either e a) -> m a
fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ())
-> IO (Either (FileError ()) ()) -> RIO e ()
forall a b. (a -> b) -> a -> b
$
File () 'Out -> ByteString -> IO (Either (FileError ()) ())
forall (m :: * -> *) content e.
MonadIO m =>
File content 'Out -> ByteString -> m (Either (FileError e) ())
writeLazyByteStringFile File () 'Out
outFp (ByteString -> IO (Either (FileError ()) ()))
-> ByteString -> IO (Either (FileError ()) ())
forall a b. (a -> b) -> a -> b
$
Maybe TextEnvelopeDescr
-> Certificate (LedgerEra era) -> ByteString
forall a.
HasTextEnvelope a =>
Maybe TextEnvelopeDescr -> a -> ByteString
textEnvelopeToJSON
(forall a. a -> Maybe a
Just @TextEnvelopeDescr TextEnvelopeDescr
"Stake address registration and vote delegation certificate")
Certificate (LedgerEra era)
certificate