{-# LANGUAGE DataKinds #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Dijkstra.TxCert () where

import Cardano.Ledger.Conway.Core (
  ConwayEraTxCert,
  ShelleyEraTxCert (..),
  notSupportedInThisEra,
  pattern RegDepositDelegTxCert,
  pattern RegDepositTxCert,
  pattern RegTxCert,
  pattern UnRegDepositTxCert,
  pattern UnRegTxCert,
 )
import Cardano.Ledger.Conway.TxCert (
  ConwayDelegCert (..),
  ConwayEraTxCert (..),
  ConwayGovCert (..),
  ConwayTxCert (..),
  conwayTotalDepositsTxCerts,
  conwayTotalRefundsTxCerts,
  getScriptWitnessConwayTxCert,
  getVKeyWitnessConwayTxCert,
  pattern ConwayRegCert,
  pattern DelegStake,
 )
import Cardano.Ledger.Core (EraTxCert (..), PoolCert (..))
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.PParams ()
import Data.Coerce (coerce)
import Data.Maybe.Strict (StrictMaybe (..))
import Data.Void (Void)

instance EraTxCert DijkstraEra where
  type TxCert DijkstraEra = ConwayTxCert DijkstraEra

  type TxCertUpgradeError DijkstraEra = Void

  upgradeTxCert :: EraTxCert (PreviousEra DijkstraEra) =>
TxCert (PreviousEra DijkstraEra)
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
upgradeTxCert = ConwayTxCert DijkstraEra -> Either Void (ConwayTxCert DijkstraEra)
forall a b. b -> Either a b
Right (ConwayTxCert DijkstraEra
 -> Either Void (ConwayTxCert DijkstraEra))
-> (ConwayTxCert ConwayEra -> ConwayTxCert DijkstraEra)
-> ConwayTxCert ConwayEra
-> Either Void (ConwayTxCert DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayTxCert ConwayEra -> ConwayTxCert DijkstraEra
forall a b. Coercible a b => a -> b
coerce

  getVKeyWitnessTxCert :: TxCert DijkstraEra -> Maybe (KeyHash 'Witness)
getVKeyWitnessTxCert = TxCert DijkstraEra -> Maybe (KeyHash 'Witness)
ConwayTxCert DijkstraEra -> Maybe (KeyHash 'Witness)
forall era. ConwayTxCert era -> Maybe (KeyHash 'Witness)
getVKeyWitnessConwayTxCert

  getScriptWitnessTxCert :: TxCert DijkstraEra -> Maybe ScriptHash
getScriptWitnessTxCert = TxCert DijkstraEra -> Maybe ScriptHash
ConwayTxCert DijkstraEra -> Maybe ScriptHash
forall era. ConwayTxCert era -> Maybe ScriptHash
getScriptWitnessConwayTxCert

  mkRegPoolTxCert :: PoolParams -> TxCert DijkstraEra
mkRegPoolTxCert = PoolCert -> ConwayTxCert DijkstraEra
forall era. PoolCert -> ConwayTxCert era
ConwayTxCertPool (PoolCert -> ConwayTxCert DijkstraEra)
-> (PoolParams -> PoolCert)
-> PoolParams
-> ConwayTxCert DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PoolParams -> PoolCert
RegPool

  getRegPoolTxCert :: TxCert DijkstraEra -> Maybe PoolParams
getRegPoolTxCert (ConwayTxCertPool (RegPool PoolParams
poolParams)) = PoolParams -> Maybe PoolParams
forall a. a -> Maybe a
Just PoolParams
poolParams
  getRegPoolTxCert TxCert DijkstraEra
_ = Maybe PoolParams
forall a. Maybe a
Nothing

  mkRetirePoolTxCert :: KeyHash 'StakePool -> EpochNo -> TxCert DijkstraEra
mkRetirePoolTxCert KeyHash 'StakePool
poolId EpochNo
epochNo = PoolCert -> ConwayTxCert DijkstraEra
forall era. PoolCert -> ConwayTxCert era
ConwayTxCertPool (PoolCert -> ConwayTxCert DijkstraEra)
-> PoolCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ KeyHash 'StakePool -> EpochNo -> PoolCert
RetirePool KeyHash 'StakePool
poolId EpochNo
epochNo

  getRetirePoolTxCert :: TxCert DijkstraEra -> Maybe (KeyHash 'StakePool, EpochNo)
getRetirePoolTxCert (ConwayTxCertPool (RetirePool KeyHash 'StakePool
poolId EpochNo
epochNo)) = (KeyHash 'StakePool, EpochNo)
-> Maybe (KeyHash 'StakePool, EpochNo)
forall a. a -> Maybe a
Just (KeyHash 'StakePool
poolId, EpochNo
epochNo)
  getRetirePoolTxCert TxCert DijkstraEra
_ = Maybe (KeyHash 'StakePool, EpochNo)
forall a. Maybe a
Nothing

  lookupRegStakeTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking)
lookupRegStakeTxCert = \case
    RegTxCert Credential 'Staking
c -> Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
    RegDepositTxCert Credential 'Staking
c Coin
_ -> Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
    RegDepositDelegTxCert Credential 'Staking
c Delegatee
_ Coin
_ -> Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
    TxCert DijkstraEra
_ -> Maybe (Credential 'Staking)
forall a. Maybe a
Nothing
  lookupUnRegStakeTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking)
lookupUnRegStakeTxCert = \case
    UnRegTxCert Credential 'Staking
c -> Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
    UnRegDepositTxCert Credential 'Staking
c Coin
_ -> Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
    TxCert DijkstraEra
_ -> Maybe (Credential 'Staking)
forall a. Maybe a
Nothing

  getTotalRefundsTxCerts :: forall (f :: * -> *).
Foldable f =>
PParams DijkstraEra
-> (Credential 'Staking -> Maybe Coin)
-> (Credential 'DRepRole -> Maybe Coin)
-> f (TxCert DijkstraEra)
-> Coin
getTotalRefundsTxCerts = PParams DijkstraEra
-> (Credential 'Staking -> Maybe Coin)
-> (Credential 'DRepRole -> Maybe Coin)
-> f (TxCert DijkstraEra)
-> Coin
forall era (f :: * -> *).
(EraPParams era, Foldable f, ConwayEraTxCert era) =>
PParams era
-> (Credential 'Staking -> Maybe Coin)
-> (Credential 'DRepRole -> Maybe Coin)
-> f (TxCert era)
-> Coin
conwayTotalRefundsTxCerts

  getTotalDepositsTxCerts :: forall (f :: * -> *).
Foldable f =>
PParams DijkstraEra
-> (KeyHash 'StakePool -> Bool) -> f (TxCert DijkstraEra) -> Coin
getTotalDepositsTxCerts = PParams DijkstraEra
-> (KeyHash 'StakePool -> Bool) -> f (TxCert DijkstraEra) -> Coin
forall era (f :: * -> *).
(ConwayEraPParams era, Foldable f, ConwayEraTxCert era) =>
PParams era
-> (KeyHash 'StakePool -> Bool) -> f (TxCert era) -> Coin
conwayTotalDepositsTxCerts

instance ShelleyEraTxCert DijkstraEra where
  mkRegTxCert :: Credential 'Staking -> TxCert DijkstraEra
mkRegTxCert Credential 'Staking
c = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayRegCert Credential 'Staking
c StrictMaybe Coin
forall a. StrictMaybe a
SNothing

  getRegTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking)
getRegTxCert (ConwayTxCertDeleg (ConwayRegCert Credential 'Staking
c StrictMaybe Coin
SNothing)) = Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
  getRegTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking)
forall a. Maybe a
Nothing

  mkUnRegTxCert :: Credential 'Staking -> TxCert DijkstraEra
mkUnRegTxCert Credential 'Staking
c = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayUnRegCert Credential 'Staking
c StrictMaybe Coin
forall a. StrictMaybe a
SNothing

  getUnRegTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking)
getUnRegTxCert (ConwayTxCertDeleg (ConwayUnRegCert Credential 'Staking
c StrictMaybe Coin
SNothing)) = Credential 'Staking -> Maybe (Credential 'Staking)
forall a. a -> Maybe a
Just Credential 'Staking
c
  getUnRegTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking)
forall a. Maybe a
Nothing

  mkDelegStakeTxCert :: Credential 'Staking -> KeyHash 'StakePool -> TxCert DijkstraEra
mkDelegStakeTxCert Credential 'Staking
c KeyHash 'StakePool
kh = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> Delegatee -> ConwayDelegCert
ConwayDelegCert Credential 'Staking
c (KeyHash 'StakePool -> Delegatee
DelegStake KeyHash 'StakePool
kh)

  getDelegStakeTxCert :: TxCert DijkstraEra
-> Maybe (Credential 'Staking, KeyHash 'StakePool)
getDelegStakeTxCert (ConwayTxCertDeleg (ConwayDelegCert Credential 'Staking
c (DelegStake KeyHash 'StakePool
kh))) = (Credential 'Staking, KeyHash 'StakePool)
-> Maybe (Credential 'Staking, KeyHash 'StakePool)
forall a. a -> Maybe a
Just (Credential 'Staking
c, KeyHash 'StakePool
kh)
  getDelegStakeTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking, KeyHash 'StakePool)
forall a. Maybe a
Nothing

  mkGenesisDelegTxCert :: ProtVerAtMost DijkstraEra 8 =>
GenesisDelegCert -> TxCert DijkstraEra
mkGenesisDelegTxCert = GenesisDelegCert -> TxCert DijkstraEra
GenesisDelegCert -> ConwayTxCert DijkstraEra
forall a. HasCallStack => a
notSupportedInThisEra
  getGenesisDelegTxCert :: ProtVerAtMost DijkstraEra 8 =>
TxCert DijkstraEra -> Maybe GenesisDelegCert
getGenesisDelegTxCert TxCert DijkstraEra
_ = Maybe GenesisDelegCert
forall a. Maybe a
Nothing

  mkMirTxCert :: ProtVerAtMost DijkstraEra 8 => MIRCert -> TxCert DijkstraEra
mkMirTxCert = MIRCert -> TxCert DijkstraEra
MIRCert -> ConwayTxCert DijkstraEra
forall a. HasCallStack => a
notSupportedInThisEra
  getMirTxCert :: ProtVerAtMost DijkstraEra 8 => TxCert DijkstraEra -> Maybe MIRCert
getMirTxCert = Maybe MIRCert -> ConwayTxCert DijkstraEra -> Maybe MIRCert
forall a b. a -> b -> a
const Maybe MIRCert
forall a. Maybe a
Nothing

instance ConwayEraTxCert DijkstraEra where
  mkRegDepositTxCert :: Credential 'Staking -> Coin -> TxCert DijkstraEra
mkRegDepositTxCert Credential 'Staking
cred Coin
c = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayRegCert Credential 'Staking
cred (StrictMaybe Coin -> ConwayDelegCert)
-> StrictMaybe Coin -> ConwayDelegCert
forall a b. (a -> b) -> a -> b
$ Coin -> StrictMaybe Coin
forall a. a -> StrictMaybe a
SJust Coin
c

  getRegDepositTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking, Coin)
getRegDepositTxCert (ConwayTxCertDeleg (ConwayRegCert Credential 'Staking
cred (SJust Coin
c))) = (Credential 'Staking, Coin) -> Maybe (Credential 'Staking, Coin)
forall a. a -> Maybe a
Just (Credential 'Staking
cred, Coin
c)
  getRegDepositTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing

  mkUnRegDepositTxCert :: Credential 'Staking -> Coin -> TxCert DijkstraEra
mkUnRegDepositTxCert Credential 'Staking
cred Coin
c = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayUnRegCert Credential 'Staking
cred (Coin -> StrictMaybe Coin
forall a. a -> StrictMaybe a
SJust Coin
c)
  getUnRegDepositTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking, Coin)
getUnRegDepositTxCert (ConwayTxCertDeleg (ConwayUnRegCert Credential 'Staking
cred (SJust Coin
c))) = (Credential 'Staking, Coin) -> Maybe (Credential 'Staking, Coin)
forall a. a -> Maybe a
Just (Credential 'Staking
cred, Coin
c)
  getUnRegDepositTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing

  mkDelegTxCert :: Credential 'Staking -> Delegatee -> TxCert DijkstraEra
mkDelegTxCert Credential 'Staking
cred Delegatee
d = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> Delegatee -> ConwayDelegCert
ConwayDelegCert Credential 'Staking
cred Delegatee
d
  getDelegTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking, Delegatee)
getDelegTxCert (ConwayTxCertDeleg (ConwayDelegCert Credential 'Staking
cred Delegatee
d)) = (Credential 'Staking, Delegatee)
-> Maybe (Credential 'Staking, Delegatee)
forall a. a -> Maybe a
Just (Credential 'Staking
cred, Delegatee
d)
  getDelegTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking, Delegatee)
forall a. Maybe a
Nothing

  mkRegDepositDelegTxCert :: Credential 'Staking -> Delegatee -> Coin -> TxCert DijkstraEra
mkRegDepositDelegTxCert Credential 'Staking
cred Delegatee
d Coin
c = ConwayDelegCert -> ConwayTxCert DijkstraEra
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert DijkstraEra)
-> ConwayDelegCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'Staking -> Delegatee -> Coin -> ConwayDelegCert
ConwayRegDelegCert Credential 'Staking
cred Delegatee
d Coin
c
  getRegDepositDelegTxCert :: TxCert DijkstraEra -> Maybe (Credential 'Staking, Delegatee, Coin)
getRegDepositDelegTxCert (ConwayTxCertDeleg (ConwayRegDelegCert Credential 'Staking
cred Delegatee
d Coin
c)) = (Credential 'Staking, Delegatee, Coin)
-> Maybe (Credential 'Staking, Delegatee, Coin)
forall a. a -> Maybe a
Just (Credential 'Staking
cred, Delegatee
d, Coin
c)
  getRegDepositDelegTxCert TxCert DijkstraEra
_ = Maybe (Credential 'Staking, Delegatee, Coin)
forall a. Maybe a
Nothing

  mkAuthCommitteeHotKeyTxCert :: Credential 'ColdCommitteeRole
-> Credential 'HotCommitteeRole -> TxCert DijkstraEra
mkAuthCommitteeHotKeyTxCert Credential 'ColdCommitteeRole
ck Credential 'HotCommitteeRole
hk = ConwayGovCert -> ConwayTxCert DijkstraEra
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert DijkstraEra)
-> ConwayGovCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'ColdCommitteeRole
-> Credential 'HotCommitteeRole -> ConwayGovCert
ConwayAuthCommitteeHotKey Credential 'ColdCommitteeRole
ck Credential 'HotCommitteeRole
hk
  getAuthCommitteeHotKeyTxCert :: TxCert DijkstraEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
getAuthCommitteeHotKeyTxCert (ConwayTxCertGov (ConwayAuthCommitteeHotKey Credential 'ColdCommitteeRole
ck Credential 'HotCommitteeRole
hk)) = (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. a -> Maybe a
Just (Credential 'ColdCommitteeRole
ck, Credential 'HotCommitteeRole
hk)
  getAuthCommitteeHotKeyTxCert TxCert DijkstraEra
_ = Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. Maybe a
Nothing

  mkResignCommitteeColdTxCert :: Credential 'ColdCommitteeRole
-> StrictMaybe Anchor -> TxCert DijkstraEra
mkResignCommitteeColdTxCert Credential 'ColdCommitteeRole
ck StrictMaybe Anchor
a = ConwayGovCert -> ConwayTxCert DijkstraEra
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert DijkstraEra)
-> ConwayGovCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'ColdCommitteeRole
-> StrictMaybe Anchor -> ConwayGovCert
ConwayResignCommitteeColdKey Credential 'ColdCommitteeRole
ck StrictMaybe Anchor
a
  getResignCommitteeColdTxCert :: TxCert DijkstraEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
getResignCommitteeColdTxCert (ConwayTxCertGov (ConwayResignCommitteeColdKey Credential 'ColdCommitteeRole
ck StrictMaybe Anchor
a)) = (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. a -> Maybe a
Just (Credential 'ColdCommitteeRole
ck, StrictMaybe Anchor
a)
  getResignCommitteeColdTxCert TxCert DijkstraEra
_ = Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing

  mkRegDRepTxCert :: Credential 'DRepRole
-> Coin -> StrictMaybe Anchor -> TxCert DijkstraEra
mkRegDRepTxCert Credential 'DRepRole
cred Coin
deposit StrictMaybe Anchor
mAnchor = ConwayGovCert -> ConwayTxCert DijkstraEra
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert DijkstraEra)
-> ConwayGovCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'DRepRole -> Coin -> StrictMaybe Anchor -> ConwayGovCert
ConwayRegDRep Credential 'DRepRole
cred Coin
deposit StrictMaybe Anchor
mAnchor
  getRegDRepTxCert :: TxCert DijkstraEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
getRegDRepTxCert = \case
    ConwayTxCertGov (ConwayRegDRep Credential 'DRepRole
cred Coin
deposit StrictMaybe Anchor
mAnchor) -> (Credential 'DRepRole, Coin, StrictMaybe Anchor)
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. a -> Maybe a
Just (Credential 'DRepRole
cred, Coin
deposit, StrictMaybe Anchor
mAnchor)
    TxCert DijkstraEra
_ -> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. Maybe a
Nothing

  mkUnRegDRepTxCert :: Credential 'DRepRole -> Coin -> TxCert DijkstraEra
mkUnRegDRepTxCert Credential 'DRepRole
cred Coin
deposit = ConwayGovCert -> ConwayTxCert DijkstraEra
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert DijkstraEra)
-> ConwayGovCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'DRepRole -> Coin -> ConwayGovCert
ConwayUnRegDRep Credential 'DRepRole
cred Coin
deposit
  getUnRegDRepTxCert :: TxCert DijkstraEra -> Maybe (Credential 'DRepRole, Coin)
getUnRegDRepTxCert = \case
    ConwayTxCertGov (ConwayUnRegDRep Credential 'DRepRole
cred Coin
deposit) -> (Credential 'DRepRole, Coin) -> Maybe (Credential 'DRepRole, Coin)
forall a. a -> Maybe a
Just (Credential 'DRepRole
cred, Coin
deposit)
    TxCert DijkstraEra
_ -> Maybe (Credential 'DRepRole, Coin)
forall a. Maybe a
Nothing

  mkUpdateDRepTxCert :: Credential 'DRepRole -> StrictMaybe Anchor -> TxCert DijkstraEra
mkUpdateDRepTxCert Credential 'DRepRole
cred StrictMaybe Anchor
mAnchor = ConwayGovCert -> ConwayTxCert DijkstraEra
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert DijkstraEra)
-> ConwayGovCert -> ConwayTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ Credential 'DRepRole -> StrictMaybe Anchor -> ConwayGovCert
ConwayUpdateDRep Credential 'DRepRole
cred StrictMaybe Anchor
mAnchor
  getUpdateDRepTxCert :: TxCert DijkstraEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
getUpdateDRepTxCert = \case
    ConwayTxCertGov (ConwayUpdateDRep Credential 'DRepRole
cred StrictMaybe Anchor
mAnchor) -> (Credential 'DRepRole, StrictMaybe Anchor)
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. a -> Maybe a
Just (Credential 'DRepRole
cred, StrictMaybe Anchor
mAnchor)
    TxCert DijkstraEra
_ -> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing