{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# LANGUAGE ViewPatterns #-}

module Cardano.Ledger.Api.Tx.Cert (
  EraTxCert (
    TxCert,
    TxCertUpgradeError,
    getRegPoolTxCert,
    getRetirePoolTxCert,
    lookupRegStakeTxCert,
    lookupUnRegStakeTxCert
  ),
  upgradeTxCert,
  getVKeyWitnessTxCert,
  getScriptWitnessTxCert,
  pattern RegPoolTxCert,
  pattern RetirePoolTxCert,
  isRegStakeTxCert,
  isUnRegStakeTxCert,

  -- * Any Era
  AnyEraTxCert (..),
  pattern AnyEraRegPoolTxCert,
  pattern AnyEraRetirePoolTxCert,
  pattern AnyEraRegTxCert,
  pattern AnyEraUnRegTxCert,
  pattern AnyEraMirTxCert,
  pattern AnyEraGenesisDelegTxCert,
  pattern AnyEraRegDepositTxCert,
  pattern AnyEraUnRegDepositTxCert,
  pattern AnyEraDelegTxCert,
  pattern AnyEraRegDepositDelegTxCert,
  pattern AnyEraAuthCommitteeHotKeyTxCert,
  pattern AnyEraResignCommitteeColdTxCert,
  pattern AnyEraRegDRepTxCert,
  pattern AnyEraUnRegDRepTxCert,
  pattern AnyEraUpdateDRepTxCert,

  -- * Shelley Era

  -- | Complete set of patterns for Shelley through Babbage `TxCert`:
  --
  -- @
  -- `TxCert` =
  --   `RegPoolTxCert`
  --   `RetirePoolTxCert`
  --   `RegTxCert`
  --   `UnRegTxCert`
  --   `DelegStakeTxCert`
  --   `MirTxCert`
  --   `GenesisDelegTxCert`
  -- @
  ShelleyEraTxCert (
    getRegTxCert,
    getUnRegTxCert,
    getDelegStakeTxCert,
    getGenesisDelegTxCert,
    getMirTxCert
  ),
  pattern MirTxCert,
  pattern GenesisDelegTxCert,
  pattern RegTxCert,
  pattern UnRegTxCert,
  pattern DelegStakeTxCert,

  -- * Conway Era

  -- | Complete set of patterns for Conway `TxCert`:
  --
  -- @
  -- `TxCert` =
  --   `RegPoolTxCert`
  --   `RetirePoolTxCert`
  --   `RegTxCert`
  --   `UnRegTxCert`
  --   `RegDepositTxCert`
  --   `UnRegDepositTxCert`
  --   `DelegTxCert`
  --   `RegDepositDelegTxCert`
  --   `AuthCommitteeHotKeyTxCert`
  --   `ResignCommitteeColdTxCert`
  --   `RegDRepTxCert`
  --   `UnRegDRepTxCert`
  -- @
  ConwayEraTxCert (
    getRegDepositTxCert,
    getUnRegDepositTxCert,
    getDelegTxCert,
    getRegDepositDelegTxCert,
    getAuthCommitteeHotKeyTxCert,
    getResignCommitteeColdTxCert,
    getRegDRepTxCert,
    getUpdateDRepTxCert
  ),
  getDelegateeTxCert,
  Delegatee (..),
  getStakePoolDelegatee,
  pattern RegDepositTxCert,
  pattern UnRegDepositTxCert,
  pattern DelegTxCert,
  pattern RegDepositDelegTxCert,
  pattern AuthCommitteeHotKeyTxCert,
  pattern ResignCommitteeColdTxCert,
  pattern RegDRepTxCert,
  pattern UnRegDRepTxCert,
) where

import Cardano.Ledger.Api.Era
import Cardano.Ledger.BaseTypes (Anchor, EpochNo, StrictMaybe)
import Cardano.Ledger.Coin (Coin)
import Cardano.Ledger.Conway.TxCert (
  ConwayEraTxCert (
    getAuthCommitteeHotKeyTxCert,
    getDelegTxCert,
    getRegDRepTxCert,
    getRegDepositDelegTxCert,
    getRegDepositTxCert,
    getResignCommitteeColdTxCert,
    getUnRegDRepTxCert,
    getUnRegDepositTxCert,
    getUpdateDRepTxCert
  ),
  Delegatee (..),
  getDelegateeTxCert,
  getStakePoolDelegatee,
  pattern AuthCommitteeHotKeyTxCert,
  pattern DelegTxCert,
  pattern RegDRepTxCert,
  pattern RegDepositDelegTxCert,
  pattern RegDepositTxCert,
  pattern ResignCommitteeColdTxCert,
  pattern UnRegDRepTxCert,
  pattern UnRegDepositTxCert,
 )
import Cardano.Ledger.Core (
  EraTxCert (
    TxCert,
    TxCertUpgradeError,
    getRegPoolTxCert,
    getRetirePoolTxCert,
    getScriptWitnessTxCert,
    getVKeyWitnessTxCert,
    lookupRegStakeTxCert,
    lookupUnRegStakeTxCert,
    upgradeTxCert
  ),
  KeyHash,
  KeyRole (..),
  KeyRoleVRF (GenDelegVRF),
  VRFVerKeyHash,
  isRegStakeTxCert,
  isUnRegStakeTxCert,
  pattern RegPoolTxCert,
  pattern RetirePoolTxCert,
 )
import Cardano.Ledger.Credential (Credential)
import Cardano.Ledger.Shelley.TxCert (
  GenesisDelegCert (..),
  MIRCert,
  ShelleyEraTxCert (
    getDelegStakeTxCert,
    getGenesisDelegTxCert,
    getMirTxCert,
    getRegTxCert,
    getUnRegTxCert
  ),
  pattern DelegStakeTxCert,
  pattern GenesisDelegTxCert,
  pattern MirTxCert,
  pattern RegTxCert,
  pattern UnRegTxCert,
 )
import Cardano.Ledger.State (PoolParams)

class EraTxCert era => AnyEraTxCert era where
  anyEraToRegTxCert :: TxCert era -> Maybe (Credential 'Staking)
  anyEraToRegTxCert = Maybe (Credential 'Staking)
-> TxCert era -> Maybe (Credential 'Staking)
forall a b. a -> b -> a
const Maybe (Credential 'Staking)
forall a. Maybe a
Nothing

  anyEraToUnRegTxCert :: TxCert era -> Maybe (Credential 'Staking)
  anyEraToUnRegTxCert = Maybe (Credential 'Staking)
-> TxCert era -> Maybe (Credential 'Staking)
forall a b. a -> b -> a
const Maybe (Credential 'Staking)
forall a. Maybe a
Nothing

  anyEraToGenesisDelegTxCert :: TxCert era -> Maybe GenesisDelegCert
  anyEraToGenesisDelegTxCert = Maybe GenesisDelegCert -> TxCert era -> Maybe GenesisDelegCert
forall a b. a -> b -> a
const Maybe GenesisDelegCert
forall a. Maybe a
Nothing

  anyEraToMirTxCert :: TxCert era -> Maybe MIRCert
  anyEraToMirTxCert = Maybe MIRCert -> TxCert era -> Maybe MIRCert
forall a b. a -> b -> a
const Maybe MIRCert
forall a. Maybe a
Nothing

  anyEraToRegDepositTxCert :: TxCert era -> Maybe (Credential 'Staking, Coin)
  default anyEraToRegDepositTxCert ::
    ConwayEraTxCert era => TxCert era -> Maybe (Credential 'Staking, Coin)
  anyEraToRegDepositTxCert = TxCert era -> Maybe (Credential 'Staking, Coin)
forall era.
ConwayEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking, Coin)
getRegDepositTxCert

  anyEraToUnRegDepositTxCert :: TxCert era -> Maybe (Credential 'Staking, Coin)
  default anyEraToUnRegDepositTxCert ::
    ConwayEraTxCert era => TxCert era -> Maybe (Credential 'Staking, Coin)
  anyEraToUnRegDepositTxCert = TxCert era -> Maybe (Credential 'Staking, Coin)
forall era.
ConwayEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking, Coin)
getUnRegDepositTxCert

  anyEraToDelegTxCert :: TxCert era -> Maybe (Credential 'Staking, Delegatee)
  default anyEraToDelegTxCert ::
    ConwayEraTxCert era => TxCert era -> Maybe (Credential 'Staking, Delegatee)
  anyEraToDelegTxCert = TxCert era -> Maybe (Credential 'Staking, Delegatee)
forall era.
ConwayEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking, Delegatee)
getDelegTxCert

  anyEraToRegDepositDelegTxCert :: TxCert era -> Maybe (Credential 'Staking, Delegatee, Coin)
  default anyEraToRegDepositDelegTxCert ::
    ConwayEraTxCert era => TxCert era -> Maybe (Credential 'Staking, Delegatee, Coin)
  anyEraToRegDepositDelegTxCert = TxCert era -> Maybe (Credential 'Staking, Delegatee, Coin)
forall era.
ConwayEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking, Delegatee, Coin)
getRegDepositDelegTxCert

  anyEraToAuthCommitteeHotKeyTxCert ::
    TxCert era -> Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
  default anyEraToAuthCommitteeHotKeyTxCert ::
    ConwayEraTxCert era =>
    TxCert era ->
    Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
  anyEraToAuthCommitteeHotKeyTxCert = TxCert era
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall era.
ConwayEraTxCert era =>
TxCert era
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
getAuthCommitteeHotKeyTxCert

  anyEraToResignCommitteeColdTxCert ::
    TxCert era -> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
  default anyEraToResignCommitteeColdTxCert ::
    ConwayEraTxCert era =>
    TxCert era ->
    Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
  anyEraToResignCommitteeColdTxCert = TxCert era
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall era.
ConwayEraTxCert era =>
TxCert era
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
getResignCommitteeColdTxCert

  anyEraToRegDRepTxCert ::
    TxCert era -> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
  default anyEraToRegDRepTxCert ::
    ConwayEraTxCert era =>
    TxCert era ->
    Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
  anyEraToRegDRepTxCert = TxCert era
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall era.
ConwayEraTxCert era =>
TxCert era
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
getRegDRepTxCert

  anyEraToUnRegDRepTxCert :: TxCert era -> Maybe (Credential 'DRepRole, Coin)
  default anyEraToUnRegDRepTxCert ::
    ConwayEraTxCert era => TxCert era -> Maybe (Credential 'DRepRole, Coin)
  anyEraToUnRegDRepTxCert = TxCert era -> Maybe (Credential 'DRepRole, Coin)
forall era.
ConwayEraTxCert era =>
TxCert era -> Maybe (Credential 'DRepRole, Coin)
getUnRegDRepTxCert

  anyEraToUpdateDRepTxCert ::
    TxCert era -> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
  default anyEraToUpdateDRepTxCert ::
    ConwayEraTxCert era =>
    TxCert era ->
    Maybe (Credential 'DRepRole, StrictMaybe Anchor)
  anyEraToUpdateDRepTxCert = TxCert era -> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall era.
ConwayEraTxCert era =>
TxCert era -> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
getUpdateDRepTxCert

instance AnyEraTxCert ShelleyEra where
  anyEraToRegTxCert :: TxCert ShelleyEra -> Maybe (Credential 'Staking)
anyEraToRegTxCert = TxCert ShelleyEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getRegTxCert
  anyEraToUnRegTxCert :: TxCert ShelleyEra -> Maybe (Credential 'Staking)
anyEraToUnRegTxCert = TxCert ShelleyEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getUnRegTxCert
  anyEraToGenesisDelegTxCert :: TxCert ShelleyEra -> Maybe GenesisDelegCert
anyEraToGenesisDelegTxCert = TxCert ShelleyEra -> Maybe GenesisDelegCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe GenesisDelegCert
getGenesisDelegTxCert
  anyEraToMirTxCert :: TxCert ShelleyEra -> Maybe MIRCert
anyEraToMirTxCert = TxCert ShelleyEra -> Maybe MIRCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe MIRCert
getMirTxCert
  anyEraToRegDepositTxCert :: TxCert ShelleyEra -> Maybe (Credential 'Staking, Coin)
anyEraToRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert ShelleyEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToUnRegDepositTxCert :: TxCert ShelleyEra -> Maybe (Credential 'Staking, Coin)
anyEraToUnRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert ShelleyEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToDelegTxCert :: TxCert ShelleyEra -> Maybe (Credential 'Staking, Delegatee)
anyEraToDelegTxCert = Maybe (Credential 'Staking, Delegatee)
-> ShelleyTxCert ShelleyEra
-> Maybe (Credential 'Staking, Delegatee)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee)
forall a. Maybe a
Nothing
  anyEraToRegDepositDelegTxCert :: TxCert ShelleyEra -> Maybe (Credential 'Staking, Delegatee, Coin)
anyEraToRegDepositDelegTxCert = Maybe (Credential 'Staking, Delegatee, Coin)
-> ShelleyTxCert ShelleyEra
-> Maybe (Credential 'Staking, Delegatee, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee, Coin)
forall a. Maybe a
Nothing
  anyEraToAuthCommitteeHotKeyTxCert :: TxCert ShelleyEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
anyEraToAuthCommitteeHotKeyTxCert = Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
-> ShelleyTxCert ShelleyEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. Maybe a
Nothing
  anyEraToResignCommitteeColdTxCert :: TxCert ShelleyEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
anyEraToResignCommitteeColdTxCert = Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
-> ShelleyTxCert ShelleyEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToRegDRepTxCert :: TxCert ShelleyEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
anyEraToRegDRepTxCert = Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
-> ShelleyTxCert ShelleyEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToUnRegDRepTxCert :: TxCert ShelleyEra -> Maybe (Credential 'DRepRole, Coin)
anyEraToUnRegDRepTxCert = Maybe (Credential 'DRepRole, Coin)
-> ShelleyTxCert ShelleyEra -> Maybe (Credential 'DRepRole, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin)
forall a. Maybe a
Nothing
  anyEraToUpdateDRepTxCert :: TxCert ShelleyEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
anyEraToUpdateDRepTxCert = Maybe (Credential 'DRepRole, StrictMaybe Anchor)
-> ShelleyTxCert ShelleyEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing

instance AnyEraTxCert AllegraEra where
  anyEraToRegTxCert :: TxCert AllegraEra -> Maybe (Credential 'Staking)
anyEraToRegTxCert = TxCert AllegraEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getRegTxCert
  anyEraToUnRegTxCert :: TxCert AllegraEra -> Maybe (Credential 'Staking)
anyEraToUnRegTxCert = TxCert AllegraEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getUnRegTxCert
  anyEraToGenesisDelegTxCert :: TxCert AllegraEra -> Maybe GenesisDelegCert
anyEraToGenesisDelegTxCert = TxCert AllegraEra -> Maybe GenesisDelegCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe GenesisDelegCert
getGenesisDelegTxCert
  anyEraToMirTxCert :: TxCert AllegraEra -> Maybe MIRCert
anyEraToMirTxCert = TxCert AllegraEra -> Maybe MIRCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe MIRCert
getMirTxCert
  anyEraToRegDepositTxCert :: TxCert AllegraEra -> Maybe (Credential 'Staking, Coin)
anyEraToRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert AllegraEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToUnRegDepositTxCert :: TxCert AllegraEra -> Maybe (Credential 'Staking, Coin)
anyEraToUnRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert AllegraEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToDelegTxCert :: TxCert AllegraEra -> Maybe (Credential 'Staking, Delegatee)
anyEraToDelegTxCert = Maybe (Credential 'Staking, Delegatee)
-> ShelleyTxCert AllegraEra
-> Maybe (Credential 'Staking, Delegatee)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee)
forall a. Maybe a
Nothing
  anyEraToRegDepositDelegTxCert :: TxCert AllegraEra -> Maybe (Credential 'Staking, Delegatee, Coin)
anyEraToRegDepositDelegTxCert = Maybe (Credential 'Staking, Delegatee, Coin)
-> ShelleyTxCert AllegraEra
-> Maybe (Credential 'Staking, Delegatee, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee, Coin)
forall a. Maybe a
Nothing
  anyEraToAuthCommitteeHotKeyTxCert :: TxCert AllegraEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
anyEraToAuthCommitteeHotKeyTxCert = Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
-> ShelleyTxCert AllegraEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. Maybe a
Nothing
  anyEraToResignCommitteeColdTxCert :: TxCert AllegraEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
anyEraToResignCommitteeColdTxCert = Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
-> ShelleyTxCert AllegraEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToRegDRepTxCert :: TxCert AllegraEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
anyEraToRegDRepTxCert = Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
-> ShelleyTxCert AllegraEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToUnRegDRepTxCert :: TxCert AllegraEra -> Maybe (Credential 'DRepRole, Coin)
anyEraToUnRegDRepTxCert = Maybe (Credential 'DRepRole, Coin)
-> ShelleyTxCert AllegraEra -> Maybe (Credential 'DRepRole, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin)
forall a. Maybe a
Nothing
  anyEraToUpdateDRepTxCert :: TxCert AllegraEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
anyEraToUpdateDRepTxCert = Maybe (Credential 'DRepRole, StrictMaybe Anchor)
-> ShelleyTxCert AllegraEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing

instance AnyEraTxCert MaryEra where
  anyEraToRegTxCert :: TxCert MaryEra -> Maybe (Credential 'Staking)
anyEraToRegTxCert = TxCert MaryEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getRegTxCert
  anyEraToUnRegTxCert :: TxCert MaryEra -> Maybe (Credential 'Staking)
anyEraToUnRegTxCert = TxCert MaryEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getUnRegTxCert
  anyEraToGenesisDelegTxCert :: TxCert MaryEra -> Maybe GenesisDelegCert
anyEraToGenesisDelegTxCert = TxCert MaryEra -> Maybe GenesisDelegCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe GenesisDelegCert
getGenesisDelegTxCert
  anyEraToMirTxCert :: TxCert MaryEra -> Maybe MIRCert
anyEraToMirTxCert = TxCert MaryEra -> Maybe MIRCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe MIRCert
getMirTxCert
  anyEraToRegDepositTxCert :: TxCert MaryEra -> Maybe (Credential 'Staking, Coin)
anyEraToRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert MaryEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToUnRegDepositTxCert :: TxCert MaryEra -> Maybe (Credential 'Staking, Coin)
anyEraToUnRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert MaryEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToDelegTxCert :: TxCert MaryEra -> Maybe (Credential 'Staking, Delegatee)
anyEraToDelegTxCert = Maybe (Credential 'Staking, Delegatee)
-> ShelleyTxCert MaryEra -> Maybe (Credential 'Staking, Delegatee)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee)
forall a. Maybe a
Nothing
  anyEraToRegDepositDelegTxCert :: TxCert MaryEra -> Maybe (Credential 'Staking, Delegatee, Coin)
anyEraToRegDepositDelegTxCert = Maybe (Credential 'Staking, Delegatee, Coin)
-> ShelleyTxCert MaryEra
-> Maybe (Credential 'Staking, Delegatee, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee, Coin)
forall a. Maybe a
Nothing
  anyEraToAuthCommitteeHotKeyTxCert :: TxCert MaryEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
anyEraToAuthCommitteeHotKeyTxCert = Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
-> ShelleyTxCert MaryEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. Maybe a
Nothing
  anyEraToResignCommitteeColdTxCert :: TxCert MaryEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
anyEraToResignCommitteeColdTxCert = Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
-> ShelleyTxCert MaryEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToRegDRepTxCert :: TxCert MaryEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
anyEraToRegDRepTxCert = Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
-> ShelleyTxCert MaryEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToUnRegDRepTxCert :: TxCert MaryEra -> Maybe (Credential 'DRepRole, Coin)
anyEraToUnRegDRepTxCert = Maybe (Credential 'DRepRole, Coin)
-> ShelleyTxCert MaryEra -> Maybe (Credential 'DRepRole, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin)
forall a. Maybe a
Nothing
  anyEraToUpdateDRepTxCert :: TxCert MaryEra -> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
anyEraToUpdateDRepTxCert = Maybe (Credential 'DRepRole, StrictMaybe Anchor)
-> ShelleyTxCert MaryEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing

instance AnyEraTxCert AlonzoEra where
  anyEraToRegTxCert :: TxCert AlonzoEra -> Maybe (Credential 'Staking)
anyEraToRegTxCert = TxCert AlonzoEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getRegTxCert
  anyEraToUnRegTxCert :: TxCert AlonzoEra -> Maybe (Credential 'Staking)
anyEraToUnRegTxCert = TxCert AlonzoEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getUnRegTxCert
  anyEraToGenesisDelegTxCert :: TxCert AlonzoEra -> Maybe GenesisDelegCert
anyEraToGenesisDelegTxCert = TxCert AlonzoEra -> Maybe GenesisDelegCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe GenesisDelegCert
getGenesisDelegTxCert
  anyEraToMirTxCert :: TxCert AlonzoEra -> Maybe MIRCert
anyEraToMirTxCert = TxCert AlonzoEra -> Maybe MIRCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe MIRCert
getMirTxCert
  anyEraToRegDepositTxCert :: TxCert AlonzoEra -> Maybe (Credential 'Staking, Coin)
anyEraToRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert AlonzoEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToUnRegDepositTxCert :: TxCert AlonzoEra -> Maybe (Credential 'Staking, Coin)
anyEraToUnRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert AlonzoEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToDelegTxCert :: TxCert AlonzoEra -> Maybe (Credential 'Staking, Delegatee)
anyEraToDelegTxCert = Maybe (Credential 'Staking, Delegatee)
-> ShelleyTxCert AlonzoEra
-> Maybe (Credential 'Staking, Delegatee)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee)
forall a. Maybe a
Nothing
  anyEraToRegDepositDelegTxCert :: TxCert AlonzoEra -> Maybe (Credential 'Staking, Delegatee, Coin)
anyEraToRegDepositDelegTxCert = Maybe (Credential 'Staking, Delegatee, Coin)
-> ShelleyTxCert AlonzoEra
-> Maybe (Credential 'Staking, Delegatee, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee, Coin)
forall a. Maybe a
Nothing
  anyEraToAuthCommitteeHotKeyTxCert :: TxCert AlonzoEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
anyEraToAuthCommitteeHotKeyTxCert = Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
-> ShelleyTxCert AlonzoEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. Maybe a
Nothing
  anyEraToResignCommitteeColdTxCert :: TxCert AlonzoEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
anyEraToResignCommitteeColdTxCert = Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
-> ShelleyTxCert AlonzoEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToRegDRepTxCert :: TxCert AlonzoEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
anyEraToRegDRepTxCert = Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
-> ShelleyTxCert AlonzoEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToUnRegDRepTxCert :: TxCert AlonzoEra -> Maybe (Credential 'DRepRole, Coin)
anyEraToUnRegDRepTxCert = Maybe (Credential 'DRepRole, Coin)
-> ShelleyTxCert AlonzoEra -> Maybe (Credential 'DRepRole, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin)
forall a. Maybe a
Nothing
  anyEraToUpdateDRepTxCert :: TxCert AlonzoEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
anyEraToUpdateDRepTxCert = Maybe (Credential 'DRepRole, StrictMaybe Anchor)
-> ShelleyTxCert AlonzoEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing

instance AnyEraTxCert BabbageEra where
  anyEraToRegTxCert :: TxCert BabbageEra -> Maybe (Credential 'Staking)
anyEraToRegTxCert = TxCert BabbageEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getRegTxCert
  anyEraToUnRegTxCert :: TxCert BabbageEra -> Maybe (Credential 'Staking)
anyEraToUnRegTxCert = TxCert BabbageEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getUnRegTxCert
  anyEraToGenesisDelegTxCert :: TxCert BabbageEra -> Maybe GenesisDelegCert
anyEraToGenesisDelegTxCert = TxCert BabbageEra -> Maybe GenesisDelegCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe GenesisDelegCert
getGenesisDelegTxCert
  anyEraToMirTxCert :: TxCert BabbageEra -> Maybe MIRCert
anyEraToMirTxCert = TxCert BabbageEra -> Maybe MIRCert
forall era.
(ShelleyEraTxCert era, AtMostEra "Babbage" era) =>
TxCert era -> Maybe MIRCert
getMirTxCert
  anyEraToRegDepositTxCert :: TxCert BabbageEra -> Maybe (Credential 'Staking, Coin)
anyEraToRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert BabbageEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToUnRegDepositTxCert :: TxCert BabbageEra -> Maybe (Credential 'Staking, Coin)
anyEraToUnRegDepositTxCert = Maybe (Credential 'Staking, Coin)
-> ShelleyTxCert BabbageEra -> Maybe (Credential 'Staking, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Coin)
forall a. Maybe a
Nothing
  anyEraToDelegTxCert :: TxCert BabbageEra -> Maybe (Credential 'Staking, Delegatee)
anyEraToDelegTxCert = Maybe (Credential 'Staking, Delegatee)
-> ShelleyTxCert BabbageEra
-> Maybe (Credential 'Staking, Delegatee)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee)
forall a. Maybe a
Nothing
  anyEraToRegDepositDelegTxCert :: TxCert BabbageEra -> Maybe (Credential 'Staking, Delegatee, Coin)
anyEraToRegDepositDelegTxCert = Maybe (Credential 'Staking, Delegatee, Coin)
-> ShelleyTxCert BabbageEra
-> Maybe (Credential 'Staking, Delegatee, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'Staking, Delegatee, Coin)
forall a. Maybe a
Nothing
  anyEraToAuthCommitteeHotKeyTxCert :: TxCert BabbageEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
anyEraToAuthCommitteeHotKeyTxCert = Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
-> ShelleyTxCert BabbageEra
-> Maybe
     (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, Credential 'HotCommitteeRole)
forall a. Maybe a
Nothing
  anyEraToResignCommitteeColdTxCert :: TxCert BabbageEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
anyEraToResignCommitteeColdTxCert = Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
-> ShelleyTxCert BabbageEra
-> Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'ColdCommitteeRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToRegDRepTxCert :: TxCert BabbageEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
anyEraToRegDRepTxCert = Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
-> ShelleyTxCert BabbageEra
-> Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin, StrictMaybe Anchor)
forall a. Maybe a
Nothing
  anyEraToUnRegDRepTxCert :: TxCert BabbageEra -> Maybe (Credential 'DRepRole, Coin)
anyEraToUnRegDRepTxCert = Maybe (Credential 'DRepRole, Coin)
-> ShelleyTxCert BabbageEra -> Maybe (Credential 'DRepRole, Coin)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, Coin)
forall a. Maybe a
Nothing
  anyEraToUpdateDRepTxCert :: TxCert BabbageEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
anyEraToUpdateDRepTxCert = Maybe (Credential 'DRepRole, StrictMaybe Anchor)
-> ShelleyTxCert BabbageEra
-> Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a b. a -> b -> a
const Maybe (Credential 'DRepRole, StrictMaybe Anchor)
forall a. Maybe a
Nothing

instance AnyEraTxCert ConwayEra where
  anyEraToRegTxCert :: TxCert ConwayEra -> Maybe (Credential 'Staking)
anyEraToRegTxCert = TxCert ConwayEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getRegTxCert
  anyEraToUnRegTxCert :: TxCert ConwayEra -> Maybe (Credential 'Staking)
anyEraToUnRegTxCert = TxCert ConwayEra -> Maybe (Credential 'Staking)
forall era.
ShelleyEraTxCert era =>
TxCert era -> Maybe (Credential 'Staking)
getUnRegTxCert

instance AnyEraTxCert DijkstraEra

pattern AnyEraRegPoolTxCert :: EraTxCert era => PoolParams -> TxCert era
pattern $mAnyEraRegPoolTxCert :: forall {r} {era}.
EraTxCert era =>
TxCert era -> (PoolParams -> r) -> ((# #) -> r) -> r
$bAnyEraRegPoolTxCert :: forall era. EraTxCert era => PoolParams -> TxCert era
AnyEraRegPoolTxCert poolParams = RegPoolTxCert poolParams

pattern AnyEraRetirePoolTxCert ::
  EraTxCert era => KeyHash 'StakePool -> EpochNo -> TxCert era
pattern $mAnyEraRetirePoolTxCert :: forall {r} {era}.
EraTxCert era =>
TxCert era
-> (KeyHash 'StakePool -> EpochNo -> r) -> ((# #) -> r) -> r
$bAnyEraRetirePoolTxCert :: forall era.
EraTxCert era =>
KeyHash 'StakePool -> EpochNo -> TxCert era
AnyEraRetirePoolTxCert keyHash epochNo = RetirePoolTxCert keyHash epochNo

pattern AnyEraRegTxCert :: AnyEraTxCert era => Credential 'Staking -> TxCert era
pattern $mAnyEraRegTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era -> (Credential 'Staking -> r) -> ((# #) -> r) -> r
AnyEraRegTxCert c <- (anyEraToRegTxCert -> Just c)

pattern AnyEraUnRegTxCert :: AnyEraTxCert era => Credential 'Staking -> TxCert era
pattern $mAnyEraUnRegTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era -> (Credential 'Staking -> r) -> ((# #) -> r) -> r
AnyEraUnRegTxCert c <- (anyEraToUnRegTxCert -> Just c)

pattern AnyEraMirTxCert :: AnyEraTxCert era => MIRCert -> TxCert era
pattern $mAnyEraMirTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era -> (MIRCert -> r) -> ((# #) -> r) -> r
AnyEraMirTxCert d <- (anyEraToMirTxCert -> Just d)

pattern AnyEraGenesisDelegTxCert ::
  AnyEraTxCert era =>
  KeyHash 'Genesis ->
  KeyHash 'GenesisDelegate ->
  VRFVerKeyHash 'GenDelegVRF ->
  TxCert era
pattern $mAnyEraGenesisDelegTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (KeyHash 'Genesis
    -> KeyHash 'GenesisDelegate -> VRFVerKeyHash 'GenDelegVRF -> r)
-> ((# #) -> r)
-> r
AnyEraGenesisDelegTxCert genKey genDelegKey vrfKeyHash <-
  (anyEraToGenesisDelegTxCert -> Just (GenesisDelegCert genKey genDelegKey vrfKeyHash))

pattern AnyEraRegDepositTxCert ::
  AnyEraTxCert era =>
  Credential 'Staking ->
  Coin ->
  TxCert era
pattern $mAnyEraRegDepositTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'Staking -> Coin -> r) -> ((# #) -> r) -> r
AnyEraRegDepositTxCert cred c <- (anyEraToRegDepositTxCert -> Just (cred, c))

pattern AnyEraUnRegDepositTxCert ::
  AnyEraTxCert era =>
  Credential 'Staking ->
  Coin ->
  TxCert era
pattern $mAnyEraUnRegDepositTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'Staking -> Coin -> r) -> ((# #) -> r) -> r
AnyEraUnRegDepositTxCert cred c <- (anyEraToUnRegDepositTxCert -> Just (cred, c))

pattern AnyEraDelegTxCert ::
  AnyEraTxCert era =>
  Credential 'Staking ->
  Delegatee ->
  TxCert era
pattern $mAnyEraDelegTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'Staking -> Delegatee -> r) -> ((# #) -> r) -> r
AnyEraDelegTxCert cred d <- (anyEraToDelegTxCert -> Just (cred, d))

pattern AnyEraRegDepositDelegTxCert ::
  AnyEraTxCert era =>
  Credential 'Staking ->
  Delegatee ->
  Coin ->
  TxCert era
pattern $mAnyEraRegDepositDelegTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'Staking -> Delegatee -> Coin -> r)
-> ((# #) -> r)
-> r
AnyEraRegDepositDelegTxCert cred d c <- (anyEraToRegDepositDelegTxCert -> Just (cred, d, c))

pattern AnyEraAuthCommitteeHotKeyTxCert ::
  AnyEraTxCert era =>
  Credential 'ColdCommitteeRole ->
  Credential 'HotCommitteeRole ->
  TxCert era
pattern $mAnyEraAuthCommitteeHotKeyTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'ColdCommitteeRole
    -> Credential 'HotCommitteeRole -> r)
-> ((# #) -> r)
-> r
AnyEraAuthCommitteeHotKeyTxCert ck hk <- (anyEraToAuthCommitteeHotKeyTxCert -> Just (ck, hk))

pattern AnyEraResignCommitteeColdTxCert ::
  AnyEraTxCert era =>
  Credential 'ColdCommitteeRole ->
  StrictMaybe Anchor ->
  TxCert era
pattern $mAnyEraResignCommitteeColdTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'ColdCommitteeRole -> StrictMaybe Anchor -> r)
-> ((# #) -> r)
-> r
AnyEraResignCommitteeColdTxCert ck a <- (anyEraToResignCommitteeColdTxCert -> Just (ck, a))

pattern AnyEraRegDRepTxCert ::
  AnyEraTxCert era =>
  Credential 'DRepRole ->
  Coin ->
  StrictMaybe Anchor ->
  TxCert era
pattern $mAnyEraRegDRepTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'DRepRole -> Coin -> StrictMaybe Anchor -> r)
-> ((# #) -> r)
-> r
AnyEraRegDRepTxCert cred deposit mAnchor <- (anyEraToRegDRepTxCert -> Just (cred, deposit, mAnchor))

pattern AnyEraUnRegDRepTxCert ::
  AnyEraTxCert era =>
  Credential 'DRepRole ->
  Coin ->
  TxCert era
pattern $mAnyEraUnRegDRepTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'DRepRole -> Coin -> r) -> ((# #) -> r) -> r
AnyEraUnRegDRepTxCert cred deposit <- (anyEraToUnRegDRepTxCert -> Just (cred, deposit))

pattern AnyEraUpdateDRepTxCert ::
  AnyEraTxCert era =>
  Credential 'DRepRole ->
  StrictMaybe Anchor ->
  TxCert era
pattern $mAnyEraUpdateDRepTxCert :: forall {r} {era}.
AnyEraTxCert era =>
TxCert era
-> (Credential 'DRepRole -> StrictMaybe Anchor -> r)
-> ((# #) -> r)
-> r
AnyEraUpdateDRepTxCert cred mAnchor <- (anyEraToUpdateDRepTxCert -> Just (cred, mAnchor))

{-# COMPLETE
  AnyEraRegPoolTxCert
  , AnyEraRetirePoolTxCert
  , AnyEraRegTxCert
  , AnyEraUnRegTxCert
  , AnyEraRegDepositTxCert
  , AnyEraUnRegDepositTxCert
  , AnyEraDelegTxCert
  , AnyEraRegDepositDelegTxCert
  , AnyEraAuthCommitteeHotKeyTxCert
  , AnyEraResignCommitteeColdTxCert
  , AnyEraRegDRepTxCert
  , AnyEraUnRegDRepTxCert
  , AnyEraUpdateDRepTxCert
  #-}