{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Dijkstra.TxCert (
DijkstraTxCertUpgradeError,
DijkstraTxCert (..),
DijkstraDelegCert (..),
) where
import Cardano.Ledger.BaseTypes (kindObject)
import Cardano.Ledger.Binary (
DecCBOR (..),
EncCBOR (..),
FromCBOR (..),
ToCBOR (..),
decodeRecordSum,
encodeListLen,
encodeWord8,
invalidKey,
toPlainEncoding,
)
import Cardano.Ledger.Coin (Coin)
import Cardano.Ledger.Conway.Core (
ConwayEraTxCert,
poolCertKeyHashWitness,
pattern AuthCommitteeHotKeyTxCert,
pattern DelegTxCert,
pattern RegDRepTxCert,
pattern RegDepositDelegTxCert,
pattern RegDepositTxCert,
pattern RegPoolTxCert,
pattern RegTxCert,
pattern ResignCommitteeColdTxCert,
pattern RetirePoolTxCert,
pattern UnRegDRepTxCert,
pattern UnRegDepositTxCert,
pattern UnRegTxCert,
pattern UpdateDRepTxCert,
)
import Cardano.Ledger.Conway.TxCert (
ConwayEraTxCert (..),
ConwayGovCert (..),
Delegatee (..),
conwayGovCertVKeyWitness,
conwayTotalDepositsTxCerts,
conwayTotalRefundsTxCerts,
conwayTxCertDelegDecoder,
)
import Cardano.Ledger.Core (
Era,
EraTxCert (..),
KeyHash,
KeyRole (..),
PoolCert (..),
ScriptHash,
Value,
eraProtVerLow,
fromEraCBOR,
)
import Cardano.Ledger.Credential (StakeCredential, credKeyHashWitness, credScriptHash)
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.PParams ()
import Cardano.Ledger.Shelley.TxCert (
ShelleyDelegCert (..),
encodePoolCert,
encodeShelleyDelegCert,
poolTxCertDecoder,
)
import Cardano.Ledger.Val (Val)
import Control.DeepSeq (NFData)
import Data.Aeson (KeyValue ((.=)), ToJSON (..))
import GHC.Generics (Generic)
import NoThunks.Class (NoThunks)
data DijkstraDelegCert
= DijkstraRegCert !StakeCredential !Coin
| DijkstraUnRegCert !StakeCredential !Coin
| DijkstraDelegCert !StakeCredential !Delegatee
| DijkstraRegDelegCert !StakeCredential !Delegatee !Coin
deriving (Int -> DijkstraDelegCert -> ShowS
[DijkstraDelegCert] -> ShowS
DijkstraDelegCert -> String
(Int -> DijkstraDelegCert -> ShowS)
-> (DijkstraDelegCert -> String)
-> ([DijkstraDelegCert] -> ShowS)
-> Show DijkstraDelegCert
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DijkstraDelegCert -> ShowS
showsPrec :: Int -> DijkstraDelegCert -> ShowS
$cshow :: DijkstraDelegCert -> String
show :: DijkstraDelegCert -> String
$cshowList :: [DijkstraDelegCert] -> ShowS
showList :: [DijkstraDelegCert] -> ShowS
Show, (forall x. DijkstraDelegCert -> Rep DijkstraDelegCert x)
-> (forall x. Rep DijkstraDelegCert x -> DijkstraDelegCert)
-> Generic DijkstraDelegCert
forall x. Rep DijkstraDelegCert x -> DijkstraDelegCert
forall x. DijkstraDelegCert -> Rep DijkstraDelegCert x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DijkstraDelegCert -> Rep DijkstraDelegCert x
from :: forall x. DijkstraDelegCert -> Rep DijkstraDelegCert x
$cto :: forall x. Rep DijkstraDelegCert x -> DijkstraDelegCert
to :: forall x. Rep DijkstraDelegCert x -> DijkstraDelegCert
Generic, DijkstraDelegCert -> DijkstraDelegCert -> Bool
(DijkstraDelegCert -> DijkstraDelegCert -> Bool)
-> (DijkstraDelegCert -> DijkstraDelegCert -> Bool)
-> Eq DijkstraDelegCert
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
== :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
$c/= :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
/= :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
Eq, Eq DijkstraDelegCert
Eq DijkstraDelegCert =>
(DijkstraDelegCert -> DijkstraDelegCert -> Ordering)
-> (DijkstraDelegCert -> DijkstraDelegCert -> Bool)
-> (DijkstraDelegCert -> DijkstraDelegCert -> Bool)
-> (DijkstraDelegCert -> DijkstraDelegCert -> Bool)
-> (DijkstraDelegCert -> DijkstraDelegCert -> Bool)
-> (DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert)
-> (DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert)
-> Ord DijkstraDelegCert
DijkstraDelegCert -> DijkstraDelegCert -> Bool
DijkstraDelegCert -> DijkstraDelegCert -> Ordering
DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: DijkstraDelegCert -> DijkstraDelegCert -> Ordering
compare :: DijkstraDelegCert -> DijkstraDelegCert -> Ordering
$c< :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
< :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
$c<= :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
<= :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
$c> :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
> :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
$c>= :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
>= :: DijkstraDelegCert -> DijkstraDelegCert -> Bool
$cmax :: DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert
max :: DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert
$cmin :: DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert
min :: DijkstraDelegCert -> DijkstraDelegCert -> DijkstraDelegCert
Ord)
instance EncCBOR DijkstraDelegCert where
encCBOR :: DijkstraDelegCert -> Encoding
encCBOR = \case
DijkstraRegCert StakeCredential
cred Coin
deposit ->
Word -> Encoding
encodeListLen Word
3
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
7
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Coin -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR Coin
deposit
DijkstraUnRegCert StakeCredential
cred Coin
deposit ->
Word -> Encoding
encodeListLen Word
3
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
8
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Coin -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR Coin
deposit
DijkstraDelegCert StakeCredential
cred (DelegStake KeyHash 'StakePool
poolId) -> ShelleyDelegCert -> Encoding
encodeShelleyDelegCert (ShelleyDelegCert -> Encoding) -> ShelleyDelegCert -> Encoding
forall a b. (a -> b) -> a -> b
$ StakeCredential -> KeyHash 'StakePool -> ShelleyDelegCert
ShelleyDelegCert StakeCredential
cred KeyHash 'StakePool
poolId
DijkstraDelegCert StakeCredential
cred (DelegVote DRep
drep) ->
Word -> Encoding
encodeListLen Word
3
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
9
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> DRep -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR DRep
drep
DijkstraDelegCert StakeCredential
cred (DelegStakeVote KeyHash 'StakePool
poolId DRep
dRep) ->
Word -> Encoding
encodeListLen Word
4
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
10
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> KeyHash 'StakePool -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR KeyHash 'StakePool
poolId
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> DRep -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR DRep
dRep
DijkstraRegDelegCert StakeCredential
cred (DelegStake KeyHash 'StakePool
poolId) Coin
deposit ->
Word -> Encoding
encodeListLen Word
4
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
11
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> KeyHash 'StakePool -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR KeyHash 'StakePool
poolId
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Coin -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR Coin
deposit
DijkstraRegDelegCert StakeCredential
cred (DelegVote DRep
drep) Coin
deposit ->
Word -> Encoding
encodeListLen Word
4
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
12
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> DRep -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR DRep
drep
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Coin -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR Coin
deposit
DijkstraRegDelegCert StakeCredential
cred (DelegStakeVote KeyHash 'StakePool
poolId DRep
dRep) Coin
deposit ->
Word -> Encoding
encodeListLen Word
5
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
encodeWord8 Word8
13
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> StakeCredential -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR StakeCredential
cred
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> KeyHash 'StakePool -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR KeyHash 'StakePool
poolId
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> DRep -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR DRep
dRep
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Coin -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR Coin
deposit
instance NFData DijkstraDelegCert
instance NoThunks DijkstraDelegCert
instance ToJSON DijkstraDelegCert where
toJSON :: DijkstraDelegCert -> Value
toJSON = \case
DijkstraRegCert StakeCredential
cred Coin
deposit ->
Text -> [Pair] -> Value
kindObject
Text
"RegCert"
[ Key
"credential" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StakeCredential -> Value
forall a. ToJSON a => a -> Value
toJSON StakeCredential
cred
, Key
"deposit" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Coin -> Value
forall a. ToJSON a => a -> Value
toJSON Coin
deposit
]
DijkstraUnRegCert StakeCredential
cred Coin
refund ->
Text -> [Pair] -> Value
kindObject
Text
"UnRegCert"
[ Key
"credential" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StakeCredential -> Value
forall a. ToJSON a => a -> Value
toJSON StakeCredential
cred
, Key
"refund" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Coin -> Value
forall a. ToJSON a => a -> Value
toJSON Coin
refund
]
DijkstraDelegCert StakeCredential
cred Delegatee
delegatee ->
Text -> [Pair] -> Value
kindObject
Text
"DelegCert"
[ Key
"credential" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StakeCredential -> Value
forall a. ToJSON a => a -> Value
toJSON StakeCredential
cred
, Key
"delegatee" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Delegatee -> Value
forall a. ToJSON a => a -> Value
toJSON Delegatee
delegatee
]
DijkstraRegDelegCert StakeCredential
cred Delegatee
delegatee Coin
deposit ->
Text -> [Pair] -> Value
kindObject
Text
"RegDelegCert"
[ Key
"credential" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= StakeCredential -> Value
forall a. ToJSON a => a -> Value
toJSON StakeCredential
cred
, Key
"delegatee" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Delegatee -> Value
forall a. ToJSON a => a -> Value
toJSON Delegatee
delegatee
, Key
"deposit" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Coin -> Value
forall a. ToJSON a => a -> Value
toJSON Coin
deposit
]
data DijkstraTxCert era
= DijkstraTxCertDeleg !DijkstraDelegCert
| DijkstraTxCertPool !PoolCert
| DijkstraTxCertGov !ConwayGovCert
deriving (Int -> DijkstraTxCert era -> ShowS
[DijkstraTxCert era] -> ShowS
DijkstraTxCert era -> String
(Int -> DijkstraTxCert era -> ShowS)
-> (DijkstraTxCert era -> String)
-> ([DijkstraTxCert era] -> ShowS)
-> Show (DijkstraTxCert era)
forall era. Int -> DijkstraTxCert era -> ShowS
forall era. [DijkstraTxCert era] -> ShowS
forall era. DijkstraTxCert era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era. Int -> DijkstraTxCert era -> ShowS
showsPrec :: Int -> DijkstraTxCert era -> ShowS
$cshow :: forall era. DijkstraTxCert era -> String
show :: DijkstraTxCert era -> String
$cshowList :: forall era. [DijkstraTxCert era] -> ShowS
showList :: [DijkstraTxCert era] -> ShowS
Show, (forall x. DijkstraTxCert era -> Rep (DijkstraTxCert era) x)
-> (forall x. Rep (DijkstraTxCert era) x -> DijkstraTxCert era)
-> Generic (DijkstraTxCert era)
forall x. Rep (DijkstraTxCert era) x -> DijkstraTxCert era
forall x. DijkstraTxCert era -> Rep (DijkstraTxCert era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x. Rep (DijkstraTxCert era) x -> DijkstraTxCert era
forall era x. DijkstraTxCert era -> Rep (DijkstraTxCert era) x
$cfrom :: forall era x. DijkstraTxCert era -> Rep (DijkstraTxCert era) x
from :: forall x. DijkstraTxCert era -> Rep (DijkstraTxCert era) x
$cto :: forall era x. Rep (DijkstraTxCert era) x -> DijkstraTxCert era
to :: forall x. Rep (DijkstraTxCert era) x -> DijkstraTxCert era
Generic, DijkstraTxCert era -> DijkstraTxCert era -> Bool
(DijkstraTxCert era -> DijkstraTxCert era -> Bool)
-> (DijkstraTxCert era -> DijkstraTxCert era -> Bool)
-> Eq (DijkstraTxCert era)
forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
== :: DijkstraTxCert era -> DijkstraTxCert era -> Bool
$c/= :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
/= :: DijkstraTxCert era -> DijkstraTxCert era -> Bool
Eq, Eq (DijkstraTxCert era)
Eq (DijkstraTxCert era) =>
(DijkstraTxCert era -> DijkstraTxCert era -> Ordering)
-> (DijkstraTxCert era -> DijkstraTxCert era -> Bool)
-> (DijkstraTxCert era -> DijkstraTxCert era -> Bool)
-> (DijkstraTxCert era -> DijkstraTxCert era -> Bool)
-> (DijkstraTxCert era -> DijkstraTxCert era -> Bool)
-> (DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era)
-> (DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era)
-> Ord (DijkstraTxCert era)
DijkstraTxCert era -> DijkstraTxCert era -> Bool
DijkstraTxCert era -> DijkstraTxCert era -> Ordering
DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era
forall era. Eq (DijkstraTxCert era)
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
forall era. DijkstraTxCert era -> DijkstraTxCert era -> Ordering
forall era.
DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era
$ccompare :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Ordering
compare :: DijkstraTxCert era -> DijkstraTxCert era -> Ordering
$c< :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
< :: DijkstraTxCert era -> DijkstraTxCert era -> Bool
$c<= :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
<= :: DijkstraTxCert era -> DijkstraTxCert era -> Bool
$c> :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
> :: DijkstraTxCert era -> DijkstraTxCert era -> Bool
$c>= :: forall era. DijkstraTxCert era -> DijkstraTxCert era -> Bool
>= :: DijkstraTxCert era -> DijkstraTxCert era -> Bool
$cmax :: forall era.
DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era
max :: DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era
$cmin :: forall era.
DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era
min :: DijkstraTxCert era -> DijkstraTxCert era -> DijkstraTxCert era
Ord)
data DijkstraTxCertUpgradeError
= RegTxCertExpunged
| UnRegTxCertExpunged
deriving (DijkstraTxCertUpgradeError -> DijkstraTxCertUpgradeError -> Bool
(DijkstraTxCertUpgradeError -> DijkstraTxCertUpgradeError -> Bool)
-> (DijkstraTxCertUpgradeError
-> DijkstraTxCertUpgradeError -> Bool)
-> Eq DijkstraTxCertUpgradeError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DijkstraTxCertUpgradeError -> DijkstraTxCertUpgradeError -> Bool
== :: DijkstraTxCertUpgradeError -> DijkstraTxCertUpgradeError -> Bool
$c/= :: DijkstraTxCertUpgradeError -> DijkstraTxCertUpgradeError -> Bool
/= :: DijkstraTxCertUpgradeError -> DijkstraTxCertUpgradeError -> Bool
Eq, Int -> DijkstraTxCertUpgradeError -> ShowS
[DijkstraTxCertUpgradeError] -> ShowS
DijkstraTxCertUpgradeError -> String
(Int -> DijkstraTxCertUpgradeError -> ShowS)
-> (DijkstraTxCertUpgradeError -> String)
-> ([DijkstraTxCertUpgradeError] -> ShowS)
-> Show DijkstraTxCertUpgradeError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DijkstraTxCertUpgradeError -> ShowS
showsPrec :: Int -> DijkstraTxCertUpgradeError -> ShowS
$cshow :: DijkstraTxCertUpgradeError -> String
show :: DijkstraTxCertUpgradeError -> String
$cshowList :: [DijkstraTxCertUpgradeError] -> ShowS
showList :: [DijkstraTxCertUpgradeError] -> ShowS
Show)
instance NFData (DijkstraTxCert era)
instance NoThunks (DijkstraTxCert era)
instance Era era => ToJSON (DijkstraTxCert era) where
toJSON :: DijkstraTxCert era -> Value
toJSON = \case
DijkstraTxCertDeleg DijkstraDelegCert
delegCert -> DijkstraDelegCert -> Value
forall a. ToJSON a => a -> Value
toJSON DijkstraDelegCert
delegCert
DijkstraTxCertPool PoolCert
poolCert -> PoolCert -> Value
forall a. ToJSON a => a -> Value
toJSON PoolCert
poolCert
DijkstraTxCertGov ConwayGovCert
govCert -> ConwayGovCert -> Value
forall a. ToJSON a => a -> Value
toJSON ConwayGovCert
govCert
instance
( EraTxCert era
, TxCert era ~ DijkstraTxCert era
) =>
FromCBOR (DijkstraTxCert era)
where
fromCBOR :: forall s. Decoder s (DijkstraTxCert era)
fromCBOR = forall era t s. (Era era, DecCBOR t) => Decoder s t
fromEraCBOR @era
instance
( ConwayEraTxCert era
, TxCert era ~ DijkstraTxCert era
) =>
DecCBOR (DijkstraTxCert era)
where
decCBOR :: forall s. Decoder s (DijkstraTxCert era)
decCBOR = Text
-> (Word -> Decoder s (Int, DijkstraTxCert era))
-> Decoder s (DijkstraTxCert era)
forall s a. Text -> (Word -> Decoder s (Int, a)) -> Decoder s a
decodeRecordSum Text
"DijkstraTxCert" ((Word -> Decoder s (Int, DijkstraTxCert era))
-> Decoder s (DijkstraTxCert era))
-> (Word -> Decoder s (Int, DijkstraTxCert era))
-> Decoder s (DijkstraTxCert era)
forall a b. (a -> b) -> a -> b
$ \case
Word
t
| Word
0 Word -> Word -> Bool
forall a. Ord a => a -> a -> Bool
<= Word
t Bool -> Bool -> Bool
&& Word
t Word -> Word -> Bool
forall a. Ord a => a -> a -> Bool
< Word
2 -> String -> Decoder s (Int, DijkstraTxCert era)
forall a. String -> Decoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Certificates without deposits are no longer supported"
| Word
t Word -> Word -> Bool
forall a. Eq a => a -> a -> Bool
== Word
2 -> do
StakeCredential
cred <- Decoder s StakeCredential
forall s. Decoder s StakeCredential
forall a s. DecCBOR a => Decoder s a
decCBOR
KeyHash 'StakePool
stakePool <- Decoder s (KeyHash 'StakePool)
forall s. Decoder s (KeyHash 'StakePool)
forall a s. DecCBOR a => Decoder s a
decCBOR
(Int, DijkstraTxCert era) -> Decoder s (Int, DijkstraTxCert era)
forall a. a -> Decoder s a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
3, StakeCredential -> Delegatee -> TxCert era
forall era.
ConwayEraTxCert era =>
StakeCredential -> Delegatee -> TxCert era
DelegTxCert StakeCredential
cred (KeyHash 'StakePool -> Delegatee
DelegStake KeyHash 'StakePool
stakePool))
| Word
3 Word -> Word -> Bool
forall a. Ord a => a -> a -> Bool
<= Word
t Bool -> Bool -> Bool
&& Word
t Word -> Word -> Bool
forall a. Ord a => a -> a -> Bool
< Word
5 -> Word -> Decoder s (Int, TxCert era)
forall era s. EraTxCert era => Word -> Decoder s (Int, TxCert era)
poolTxCertDecoder Word
t
| Word
t Word -> Word -> Bool
forall a. Eq a => a -> a -> Bool
== Word
5 -> String -> Decoder s (Int, DijkstraTxCert era)
forall a. String -> Decoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Genesis delegation certificates are no longer supported"
| Word
t Word -> Word -> Bool
forall a. Eq a => a -> a -> Bool
== Word
6 -> String -> Decoder s (Int, DijkstraTxCert era)
forall a. String -> Decoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"MIR certificates are no longer supported"
| Word
7 Word -> Word -> Bool
forall a. Ord a => a -> a -> Bool
<= Word
t -> Word -> Decoder s (Int, TxCert era)
forall era s.
ConwayEraTxCert era =>
Word -> Decoder s (Int, TxCert era)
conwayTxCertDelegDecoder Word
t
Word
t -> Word -> Decoder s (Int, DijkstraTxCert era)
forall a (m :: * -> *). (Typeable a, MonadFail m) => Word -> m a
invalidKey Word
t
instance (Era era, Val (Value era)) => ToCBOR (DijkstraTxCert era) where
toCBOR :: DijkstraTxCert era -> Encoding
toCBOR = Version -> Encoding -> Encoding
toPlainEncoding (forall era. Era era => Version
eraProtVerLow @era) (Encoding -> Encoding)
-> (DijkstraTxCert era -> Encoding)
-> DijkstraTxCert era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraTxCert era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR
instance (Era era, Val (Value era)) => EncCBOR (DijkstraTxCert era) where
encCBOR :: DijkstraTxCert era -> Encoding
encCBOR = \case
DijkstraTxCertDeleg DijkstraDelegCert
delegCert -> DijkstraDelegCert -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR DijkstraDelegCert
delegCert
DijkstraTxCertPool PoolCert
poolCert -> PoolCert -> Encoding
encodePoolCert PoolCert
poolCert
DijkstraTxCertGov ConwayGovCert
govCert -> ConwayGovCert -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR ConwayGovCert
govCert
instance EraTxCert DijkstraEra where
type TxCert DijkstraEra = DijkstraTxCert DijkstraEra
type TxCertUpgradeError DijkstraEra = DijkstraTxCertUpgradeError
upgradeTxCert :: EraTxCert (PreviousEra DijkstraEra) =>
TxCert (PreviousEra DijkstraEra)
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
upgradeTxCert = \case
RegPoolTxCert PoolParams
poolParams -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ PoolParams -> TxCert DijkstraEra
forall era. EraTxCert era => PoolParams -> TxCert era
RegPoolTxCert PoolParams
poolParams
RetirePoolTxCert KeyHash 'StakePool
poolId EpochNo
epochNo -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ KeyHash 'StakePool -> EpochNo -> TxCert DijkstraEra
forall era.
EraTxCert era =>
KeyHash 'StakePool -> EpochNo -> TxCert era
RetirePoolTxCert KeyHash 'StakePool
poolId EpochNo
epochNo
RegDepositTxCert StakeCredential
cred Coin
c -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Coin -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
StakeCredential -> Coin -> TxCert era
RegDepositTxCert StakeCredential
cred Coin
c
UnRegDepositTxCert StakeCredential
cred Coin
c -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Coin -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
StakeCredential -> Coin -> TxCert era
UnRegDepositTxCert StakeCredential
cred Coin
c
DelegTxCert StakeCredential
cred Delegatee
d -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Delegatee -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
StakeCredential -> Delegatee -> TxCert era
DelegTxCert StakeCredential
cred Delegatee
d
RegDepositDelegTxCert StakeCredential
cred Delegatee
d Coin
c -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Delegatee -> Coin -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
StakeCredential -> Delegatee -> Coin -> TxCert era
RegDepositDelegTxCert StakeCredential
cred Delegatee
d Coin
c
AuthCommitteeHotKeyTxCert Credential 'ColdCommitteeRole
ck Credential 'HotCommitteeRole
hk -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Credential 'ColdCommitteeRole
-> Credential 'HotCommitteeRole -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
Credential 'ColdCommitteeRole
-> Credential 'HotCommitteeRole -> TxCert era
AuthCommitteeHotKeyTxCert Credential 'ColdCommitteeRole
ck Credential 'HotCommitteeRole
hk
ResignCommitteeColdTxCert Credential 'ColdCommitteeRole
ck StrictMaybe Anchor
a -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Credential 'ColdCommitteeRole
-> StrictMaybe Anchor -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
Credential 'ColdCommitteeRole -> StrictMaybe Anchor -> TxCert era
ResignCommitteeColdTxCert Credential 'ColdCommitteeRole
ck StrictMaybe Anchor
a
RegDRepTxCert Credential 'DRepRole
cred Coin
deposit StrictMaybe Anchor
mAnchor -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Credential 'DRepRole
-> Coin -> StrictMaybe Anchor -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
Credential 'DRepRole -> Coin -> StrictMaybe Anchor -> TxCert era
RegDRepTxCert Credential 'DRepRole
cred Coin
deposit StrictMaybe Anchor
mAnchor
UnRegDRepTxCert Credential 'DRepRole
cred Coin
deposit -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Credential 'DRepRole -> Coin -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
Credential 'DRepRole -> Coin -> TxCert era
UnRegDRepTxCert Credential 'DRepRole
cred Coin
deposit
UpdateDRepTxCert Credential 'DRepRole
cred StrictMaybe Anchor
mAnchor -> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. b -> Either a b
Right (TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra))
-> TxCert DijkstraEra
-> Either (TxCertUpgradeError DijkstraEra) (TxCert DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Credential 'DRepRole -> StrictMaybe Anchor -> TxCert DijkstraEra
forall era.
ConwayEraTxCert era =>
Credential 'DRepRole -> StrictMaybe Anchor -> TxCert era
UpdateDRepTxCert Credential 'DRepRole
cred StrictMaybe Anchor
mAnchor
RegTxCert {} -> DijkstraTxCertUpgradeError
-> Either DijkstraTxCertUpgradeError (DijkstraTxCert DijkstraEra)
forall a b. a -> Either a b
Left DijkstraTxCertUpgradeError
RegTxCertExpunged
UnRegTxCert {} -> DijkstraTxCertUpgradeError
-> Either DijkstraTxCertUpgradeError (DijkstraTxCert DijkstraEra)
forall a b. a -> Either a b
Left DijkstraTxCertUpgradeError
UnRegTxCertExpunged
TxCert (PreviousEra DijkstraEra)
_ -> String
-> Either DijkstraTxCertUpgradeError (DijkstraTxCert DijkstraEra)
forall a. HasCallStack => String -> a
error String
"Impossible: all patterns have been accounted for"
getVKeyWitnessTxCert :: TxCert DijkstraEra -> Maybe (KeyHash 'Witness)
getVKeyWitnessTxCert = TxCert DijkstraEra -> Maybe (KeyHash 'Witness)
DijkstraTxCert DijkstraEra -> Maybe (KeyHash 'Witness)
forall era. DijkstraTxCert era -> Maybe (KeyHash 'Witness)
getVKeyWitnessDijkstraTxCert
getScriptWitnessTxCert :: TxCert DijkstraEra -> Maybe ScriptHash
getScriptWitnessTxCert = TxCert DijkstraEra -> Maybe ScriptHash
DijkstraTxCert DijkstraEra -> Maybe ScriptHash
forall era. DijkstraTxCert era -> Maybe ScriptHash
getScriptWitnessDijkstraTxCert
mkRegPoolTxCert :: PoolParams -> TxCert DijkstraEra
mkRegPoolTxCert = PoolCert -> DijkstraTxCert DijkstraEra
forall era. PoolCert -> DijkstraTxCert era
DijkstraTxCertPool (PoolCert -> DijkstraTxCert DijkstraEra)
-> (PoolParams -> PoolCert)
-> PoolParams
-> DijkstraTxCert DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PoolParams -> PoolCert
RegPool
getRegPoolTxCert :: TxCert DijkstraEra -> Maybe PoolParams
getRegPoolTxCert (DijkstraTxCertPool (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 -> DijkstraTxCert DijkstraEra
forall era. PoolCert -> DijkstraTxCert era
DijkstraTxCertPool (PoolCert -> DijkstraTxCert DijkstraEra)
-> PoolCert -> DijkstraTxCert 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 (DijkstraTxCertPool (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 StakeCredential
lookupRegStakeTxCert = \case
RegDepositTxCert StakeCredential
c Coin
_ -> StakeCredential -> Maybe StakeCredential
forall a. a -> Maybe a
Just StakeCredential
c
RegDepositDelegTxCert StakeCredential
c Delegatee
_ Coin
_ -> StakeCredential -> Maybe StakeCredential
forall a. a -> Maybe a
Just StakeCredential
c
TxCert DijkstraEra
_ -> Maybe StakeCredential
forall a. Maybe a
Nothing
lookupUnRegStakeTxCert :: TxCert DijkstraEra -> Maybe StakeCredential
lookupUnRegStakeTxCert = \case
UnRegDepositTxCert StakeCredential
c Coin
_ -> StakeCredential -> Maybe StakeCredential
forall a. a -> Maybe a
Just StakeCredential
c
TxCert DijkstraEra
_ -> Maybe StakeCredential
forall a. Maybe a
Nothing
getTotalRefundsTxCerts :: forall (f :: * -> *).
Foldable f =>
PParams DijkstraEra
-> (StakeCredential -> Maybe Coin)
-> (Credential 'DRepRole -> Maybe Coin)
-> f (TxCert DijkstraEra)
-> Coin
getTotalRefundsTxCerts = PParams DijkstraEra
-> (StakeCredential -> Maybe Coin)
-> (Credential 'DRepRole -> Maybe Coin)
-> f (TxCert DijkstraEra)
-> Coin
forall era (f :: * -> *).
(EraPParams era, Foldable f, ConwayEraTxCert era) =>
PParams era
-> (StakeCredential -> 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
getScriptWitnessDijkstraTxCert :: DijkstraTxCert era -> Maybe ScriptHash
getScriptWitnessDijkstraTxCert :: forall era. DijkstraTxCert era -> Maybe ScriptHash
getScriptWitnessDijkstraTxCert = \case
DijkstraTxCertDeleg DijkstraDelegCert
delegCert ->
case DijkstraDelegCert
delegCert of
DijkstraRegCert StakeCredential
cred Coin
_ -> StakeCredential -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash StakeCredential
cred
DijkstraUnRegCert StakeCredential
cred Coin
_ -> StakeCredential -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash StakeCredential
cred
DijkstraDelegCert StakeCredential
cred Delegatee
_ -> StakeCredential -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash StakeCredential
cred
DijkstraRegDelegCert StakeCredential
cred Delegatee
_ Coin
_ -> StakeCredential -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash StakeCredential
cred
DijkstraTxCertPool {} -> Maybe ScriptHash
forall a. Maybe a
Nothing
DijkstraTxCertGov ConwayGovCert
govCert -> ConwayGovCert -> Maybe ScriptHash
govWitness ConwayGovCert
govCert
where
govWitness :: ConwayGovCert -> Maybe ScriptHash
govWitness :: ConwayGovCert -> Maybe ScriptHash
govWitness = \case
ConwayAuthCommitteeHotKey Credential 'ColdCommitteeRole
coldCred Credential 'HotCommitteeRole
_hotCred -> Credential 'ColdCommitteeRole -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash Credential 'ColdCommitteeRole
coldCred
ConwayResignCommitteeColdKey Credential 'ColdCommitteeRole
coldCred StrictMaybe Anchor
_ -> Credential 'ColdCommitteeRole -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash Credential 'ColdCommitteeRole
coldCred
ConwayRegDRep Credential 'DRepRole
cred Coin
_ StrictMaybe Anchor
_ -> Credential 'DRepRole -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash Credential 'DRepRole
cred
ConwayUnRegDRep Credential 'DRepRole
cred Coin
_ -> Credential 'DRepRole -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash Credential 'DRepRole
cred
ConwayUpdateDRep Credential 'DRepRole
cred StrictMaybe Anchor
_ -> Credential 'DRepRole -> Maybe ScriptHash
forall (kr :: KeyRole). Credential kr -> Maybe ScriptHash
credScriptHash Credential 'DRepRole
cred
getVKeyWitnessDijkstraTxCert :: DijkstraTxCert era -> Maybe (KeyHash 'Witness)
getVKeyWitnessDijkstraTxCert :: forall era. DijkstraTxCert era -> Maybe (KeyHash 'Witness)
getVKeyWitnessDijkstraTxCert = \case
DijkstraTxCertDeleg DijkstraDelegCert
delegCert ->
case DijkstraDelegCert
delegCert of
DijkstraRegCert StakeCredential
cred Coin
_ -> StakeCredential -> Maybe (KeyHash 'Witness)
forall (r :: KeyRole). Credential r -> Maybe (KeyHash 'Witness)
credKeyHashWitness StakeCredential
cred
DijkstraUnRegCert StakeCredential
cred Coin
_ -> StakeCredential -> Maybe (KeyHash 'Witness)
forall (r :: KeyRole). Credential r -> Maybe (KeyHash 'Witness)
credKeyHashWitness StakeCredential
cred
DijkstraDelegCert StakeCredential
cred Delegatee
_ -> StakeCredential -> Maybe (KeyHash 'Witness)
forall (r :: KeyRole). Credential r -> Maybe (KeyHash 'Witness)
credKeyHashWitness StakeCredential
cred
DijkstraRegDelegCert StakeCredential
cred Delegatee
_ Coin
_ -> StakeCredential -> Maybe (KeyHash 'Witness)
forall (r :: KeyRole). Credential r -> Maybe (KeyHash 'Witness)
credKeyHashWitness StakeCredential
cred
DijkstraTxCertPool PoolCert
poolCert -> KeyHash 'Witness -> Maybe (KeyHash 'Witness)
forall a. a -> Maybe a
Just (KeyHash 'Witness -> Maybe (KeyHash 'Witness))
-> KeyHash 'Witness -> Maybe (KeyHash 'Witness)
forall a b. (a -> b) -> a -> b
$ PoolCert -> KeyHash 'Witness
poolCertKeyHashWitness PoolCert
poolCert
DijkstraTxCertGov ConwayGovCert
govCert -> ConwayGovCert -> Maybe (KeyHash 'Witness)
conwayGovCertVKeyWitness ConwayGovCert
govCert
instance ConwayEraTxCert DijkstraEra where
mkRegDepositTxCert :: StakeCredential -> Coin -> TxCert DijkstraEra
mkRegDepositTxCert StakeCredential
cred Coin
c = DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall era. DijkstraDelegCert -> DijkstraTxCert era
DijkstraTxCertDeleg (DijkstraDelegCert -> DijkstraTxCert DijkstraEra)
-> DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Coin -> DijkstraDelegCert
DijkstraRegCert StakeCredential
cred Coin
c
getRegDepositTxCert :: TxCert DijkstraEra -> Maybe (StakeCredential, Coin)
getRegDepositTxCert (DijkstraTxCertDeleg (DijkstraRegCert StakeCredential
cred Coin
c)) = (StakeCredential, Coin) -> Maybe (StakeCredential, Coin)
forall a. a -> Maybe a
Just (StakeCredential
cred, Coin
c)
getRegDepositTxCert TxCert DijkstraEra
_ = Maybe (StakeCredential, Coin)
forall a. Maybe a
Nothing
mkUnRegDepositTxCert :: StakeCredential -> Coin -> TxCert DijkstraEra
mkUnRegDepositTxCert StakeCredential
cred Coin
c = DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall era. DijkstraDelegCert -> DijkstraTxCert era
DijkstraTxCertDeleg (DijkstraDelegCert -> DijkstraTxCert DijkstraEra)
-> DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Coin -> DijkstraDelegCert
DijkstraUnRegCert StakeCredential
cred Coin
c
getUnRegDepositTxCert :: TxCert DijkstraEra -> Maybe (StakeCredential, Coin)
getUnRegDepositTxCert (DijkstraTxCertDeleg (DijkstraUnRegCert StakeCredential
cred Coin
c)) = (StakeCredential, Coin) -> Maybe (StakeCredential, Coin)
forall a. a -> Maybe a
Just (StakeCredential
cred, Coin
c)
getUnRegDepositTxCert TxCert DijkstraEra
_ = Maybe (StakeCredential, Coin)
forall a. Maybe a
Nothing
mkDelegTxCert :: StakeCredential -> Delegatee -> TxCert DijkstraEra
mkDelegTxCert StakeCredential
cred Delegatee
d = DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall era. DijkstraDelegCert -> DijkstraTxCert era
DijkstraTxCertDeleg (DijkstraDelegCert -> DijkstraTxCert DijkstraEra)
-> DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Delegatee -> DijkstraDelegCert
DijkstraDelegCert StakeCredential
cred Delegatee
d
getDelegTxCert :: TxCert DijkstraEra -> Maybe (StakeCredential, Delegatee)
getDelegTxCert (DijkstraTxCertDeleg (DijkstraDelegCert StakeCredential
cred Delegatee
d)) = (StakeCredential, Delegatee) -> Maybe (StakeCredential, Delegatee)
forall a. a -> Maybe a
Just (StakeCredential
cred, Delegatee
d)
getDelegTxCert TxCert DijkstraEra
_ = Maybe (StakeCredential, Delegatee)
forall a. Maybe a
Nothing
mkRegDepositDelegTxCert :: StakeCredential -> Delegatee -> Coin -> TxCert DijkstraEra
mkRegDepositDelegTxCert StakeCredential
cred Delegatee
d Coin
c = DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall era. DijkstraDelegCert -> DijkstraTxCert era
DijkstraTxCertDeleg (DijkstraDelegCert -> DijkstraTxCert DijkstraEra)
-> DijkstraDelegCert -> DijkstraTxCert DijkstraEra
forall a b. (a -> b) -> a -> b
$ StakeCredential -> Delegatee -> Coin -> DijkstraDelegCert
DijkstraRegDelegCert StakeCredential
cred Delegatee
d Coin
c
getRegDepositDelegTxCert :: TxCert DijkstraEra -> Maybe (StakeCredential, Delegatee, Coin)
getRegDepositDelegTxCert (DijkstraTxCertDeleg (DijkstraRegDelegCert StakeCredential
cred Delegatee
d Coin
c)) = (StakeCredential, Delegatee, Coin)
-> Maybe (StakeCredential, Delegatee, Coin)
forall a. a -> Maybe a
Just (StakeCredential
cred, Delegatee
d, Coin
c)
getRegDepositDelegTxCert TxCert DijkstraEra
_ = Maybe (StakeCredential, Delegatee, Coin)
forall a. Maybe a
Nothing
mkAuthCommitteeHotKeyTxCert :: Credential 'ColdCommitteeRole
-> Credential 'HotCommitteeRole -> TxCert DijkstraEra
mkAuthCommitteeHotKeyTxCert Credential 'ColdCommitteeRole
ck Credential 'HotCommitteeRole
hk = ConwayGovCert -> DijkstraTxCert DijkstraEra
forall era. ConwayGovCert -> DijkstraTxCert era
DijkstraTxCertGov (ConwayGovCert -> DijkstraTxCert DijkstraEra)
-> ConwayGovCert -> DijkstraTxCert 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 (DijkstraTxCertGov (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 -> DijkstraTxCert DijkstraEra
forall era. ConwayGovCert -> DijkstraTxCert era
DijkstraTxCertGov (ConwayGovCert -> DijkstraTxCert DijkstraEra)
-> ConwayGovCert -> DijkstraTxCert 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 (DijkstraTxCertGov (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 -> DijkstraTxCert DijkstraEra
forall era. ConwayGovCert -> DijkstraTxCert era
DijkstraTxCertGov (ConwayGovCert -> DijkstraTxCert DijkstraEra)
-> ConwayGovCert -> DijkstraTxCert 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
DijkstraTxCertGov (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 -> DijkstraTxCert DijkstraEra
forall era. ConwayGovCert -> DijkstraTxCert era
DijkstraTxCertGov (ConwayGovCert -> DijkstraTxCert DijkstraEra)
-> ConwayGovCert -> DijkstraTxCert 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
DijkstraTxCertGov (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 -> DijkstraTxCert DijkstraEra
forall era. ConwayGovCert -> DijkstraTxCert era
DijkstraTxCertGov (ConwayGovCert -> DijkstraTxCert DijkstraEra)
-> ConwayGovCert -> DijkstraTxCert 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
DijkstraTxCertGov (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