Skip to content

Commit 2d0f85b

Browse files
committed
Update makeStakeAddressRegistrationCertificate
1 parent d400b29 commit 2d0f85b

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

cardano-api/src/Cardano/Api/Compatible/Certificate.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ module Cardano.Api.Compatible.Certificate
66
, makeStakeAddressDelegationCertificate
77
, makeStakeAddressRegistrationCertificate
88
, makeStakeAddressUnregistrationCertificate
9+
, StakeCredentialAndDeposit (..)
10+
, StakeRegistrationRequirements
911

1012
-- * Registering stake pools
1113
, makeStakePoolRegistrationCertificate

cardano-api/src/Cardano/Api/Experimental/Tx/Internal/Certificate/Compatible.hs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ module Cardano.Api.Experimental.Tx.Internal.Certificate.Compatible
1515
, makeStakeAddressDelegationCertificate
1616
, makeStakeAddressRegistrationCertificate
1717
, makeStakeAddressUnregistrationCertificate
18+
, StakeCredentialAndDeposit (..)
19+
, StakeRegistrationRequirements
1820

1921
-- * Registering stake pools
2022
, makeStakePoolRegistrationCertificate
@@ -79,16 +81,47 @@ makeStakeAddressDelegationCertificate sCred delegatee =
7981
Certificate $
8082
Ledger.mkDelegStakeTxCert (toShelleyStakeCredential sCred) (Api.unStakePoolKeyHash delegatee')
8183

84+
data StakeCredentialAndDeposit = StakeCredentialAndDeposit StakeCredential Ledger.Coin
85+
86+
type family StakeRegistrationRequirements era where
87+
StakeRegistrationRequirements DijkstraEra = StakeCredentialAndDeposit
88+
StakeRegistrationRequirements ConwayEra = StakeCredentialAndDeposit
89+
StakeRegistrationRequirements BabbageEra = StakeCredential
90+
StakeRegistrationRequirements AlonzoEra = StakeCredential
91+
StakeRegistrationRequirements MaryEra = StakeCredential
92+
StakeRegistrationRequirements AllegraEra = StakeCredential
93+
StakeRegistrationRequirements ShelleyEra = StakeCredential
94+
8295
makeStakeAddressRegistrationCertificate
8396
:: forall era
8497
. IsShelleyBasedEra era
85-
=> StakeCredential
98+
=> StakeRegistrationRequirements era
8699
-> Certificate (ShelleyLedgerEra era)
87100
makeStakeAddressRegistrationCertificate scred =
88-
shelleyBasedEraConstraints (shelleyBasedEra @era) $
101+
case shelleyBasedEra @era of
102+
ShelleyBasedEraDijkstra ->
103+
createRegCertWithDeposit scred
104+
ShelleyBasedEraConway ->
105+
createRegCertWithDeposit scred
106+
ShelleyBasedEraBabbage ->
107+
createRegCertNoDeposit scred
108+
ShelleyBasedEraAlonzo ->
109+
createRegCertNoDeposit scred
110+
ShelleyBasedEraMary ->
111+
createRegCertNoDeposit scred
112+
ShelleyBasedEraAllegra ->
113+
createRegCertNoDeposit scred
114+
ShelleyBasedEraShelley ->
115+
createRegCertNoDeposit scred
116+
where
117+
createRegCertWithDeposit stakeCredWithDeposit =
118+
let StakeCredentialAndDeposit cred dep = stakeCredWithDeposit
119+
in Certificate $
120+
Ledger.mkRegDepositTxCert (toShelleyStakeCredential cred) dep
121+
createRegCertNoDeposit stakeCredential =
89122
Certificate $
90123
Ledger.mkRegTxCert $
91-
toShelleyStakeCredential scred
124+
toShelleyStakeCredential stakeCredential
92125

93126
makeStakeAddressUnregistrationCertificate
94127
:: forall era

0 commit comments

Comments
 (0)