{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Cardano.Rpc.Server.Internal.UtxoRpc.Type.Governance
( proposalProcedureToUtxoRpcProposal
)
where
import Cardano.Api.Address
import Cardano.Api.Era
import Cardano.Api.Ledger qualified as L
import Cardano.Api.Serialise.Raw
import Cardano.Api.Tx
import Cardano.Rpc.Proto.Api.UtxoRpc.Query qualified as U5c
import Cardano.Rpc.Proto.Api.UtxoRpc.Query qualified as UtxoRpc
import Cardano.Rpc.Server.Internal.Orphans ()
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.Certificate
( anchorToUtxoRpcAnchor
, credentialToUtxoRpcStakeCredential
, scriptHashToBytes
)
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.ProtocolParameters
( pparamsUpdateToUtxoRpcPParams
)
import Cardano.Ledger.BaseTypes qualified as L
import Cardano.Ledger.Conway.PParams qualified as L
import RIO
import Data.Map.Strict qualified as M
import Data.ProtoLens (defMessage)
import Network.GRPC.Spec
proposalProcedureToUtxoRpcProposal
:: L.ConwayEraPParams era
=> L.ProposalProcedure era
-> Proto UtxoRpc.GovernanceActionProposal
proposalProcedureToUtxoRpcProposal :: forall era.
ConwayEraPParams era =>
ProposalProcedure era -> Proto GovernanceActionProposal
proposalProcedureToUtxoRpcProposal ProposalProcedure era
proposal =
Proto GovernanceActionProposal
forall msg. Message msg => msg
defMessage
Proto GovernanceActionProposal
-> (Proto GovernanceActionProposal
-> Proto GovernanceActionProposal)
-> Proto GovernanceActionProposal
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto GovernanceActionProposal) (Proto BigInt)
forall (f :: * -> *) s a.
(Functor f, HasField s "deposit" a) =>
LensLike' f s a
U5c.deposit LensLike' Identity (Proto GovernanceActionProposal) (Proto BigInt)
-> Proto BigInt
-> Proto GovernanceActionProposal
-> Proto GovernanceActionProposal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> Proto BigInt
forall t s. Inject t s => t -> s
inject (ProposalProcedure era -> Coin
forall era. ProposalProcedure era -> Coin
L.pProcDeposit ProposalProcedure era
proposal)
Proto GovernanceActionProposal
-> (Proto GovernanceActionProposal
-> Proto GovernanceActionProposal)
-> Proto GovernanceActionProposal
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto GovernanceActionProposal) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "rewardAccount" a) =>
LensLike' f s a
U5c.rewardAccount LensLike' Identity (Proto GovernanceActionProposal) ByteString
-> ByteString
-> Proto GovernanceActionProposal
-> Proto GovernanceActionProposal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StakeAddress -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes (AccountAddress -> StakeAddress
fromShelleyStakeAddr (ProposalProcedure era -> AccountAddress
forall era. ProposalProcedure era -> AccountAddress
L.pProcReturnAddr ProposalProcedure era
proposal))
Proto GovernanceActionProposal
-> (Proto GovernanceActionProposal
-> Proto GovernanceActionProposal)
-> Proto GovernanceActionProposal
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceActionProposal) (Proto GovernanceAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "govAction" a) =>
LensLike' f s a
U5c.govAction LensLike'
Identity (Proto GovernanceActionProposal) (Proto GovernanceAction)
-> Proto GovernanceAction
-> Proto GovernanceActionProposal
-> Proto GovernanceActionProposal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ GovAction era -> Proto GovernanceAction
forall era.
ConwayEraPParams era =>
GovAction era -> Proto GovernanceAction
govActionToUtxoRpcGovernanceAction (ProposalProcedure era -> GovAction era
forall era. ProposalProcedure era -> GovAction era
L.pProcGovAction ProposalProcedure era
proposal)
Proto GovernanceActionProposal
-> (Proto GovernanceActionProposal
-> Proto GovernanceActionProposal)
-> Proto GovernanceActionProposal
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto GovernanceActionProposal) (Proto Anchor)
forall (f :: * -> *) s a.
(Functor f, HasField s "anchor" a) =>
LensLike' f s a
U5c.anchor LensLike' Identity (Proto GovernanceActionProposal) (Proto Anchor)
-> Proto Anchor
-> Proto GovernanceActionProposal
-> Proto GovernanceActionProposal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Anchor -> Proto Anchor
anchorToUtxoRpcAnchor (ProposalProcedure era -> Anchor
forall era. ProposalProcedure era -> Anchor
L.pProcAnchor ProposalProcedure era
proposal)
govActionToUtxoRpcGovernanceAction
:: L.ConwayEraPParams era
=> L.GovAction era
-> Proto UtxoRpc.GovernanceAction
govActionToUtxoRpcGovernanceAction :: forall era.
ConwayEraPParams era =>
GovAction era -> Proto GovernanceAction
govActionToUtxoRpcGovernanceAction = \case
L.ParameterChange StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
prevActionId PParamsUpdate era
pparamsUpdate StrictMaybe ScriptHash
guardrailsScriptHash ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage
Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceAction) (Proto ParameterChangeAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "parameterChangeAction" a) =>
LensLike' f s a
U5c.parameterChangeAction
LensLike'
Identity (Proto GovernanceAction) (Proto ParameterChangeAction)
-> Proto ParameterChangeAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto ParameterChangeAction
forall msg. Message msg => msg
defMessage
Proto ParameterChangeAction
-> (Proto ParameterChangeAction -> Proto ParameterChangeAction)
-> Proto ParameterChangeAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity
(Proto ParameterChangeAction)
(Maybe (Proto GovernanceActionId))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'govActionId" a) =>
LensLike' f s a
U5c.maybe'govActionId
LensLike'
Identity
(Proto ParameterChangeAction)
(Maybe (Proto GovernanceActionId))
-> Maybe (Proto GovernanceActionId)
-> Proto ParameterChangeAction
-> Proto ParameterChangeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (GovPurposeId 'PParamUpdatePurpose -> Proto GovernanceActionId)
-> Maybe (GovPurposeId 'PParamUpdatePurpose)
-> Maybe (Proto GovernanceActionId)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId 'PParamUpdatePurpose -> Proto GovernanceActionId
forall (purpose :: GovActionPurpose).
GovPurposeId purpose -> Proto GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId (StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> Maybe (GovPurposeId 'PParamUpdatePurpose)
forall a. StrictMaybe a -> Maybe a
L.strictMaybeToMaybe StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
prevActionId)
Proto ParameterChangeAction
-> (Proto ParameterChangeAction -> Proto ParameterChangeAction)
-> Proto ParameterChangeAction
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto ParameterChangeAction) (Proto PParams)
forall (f :: * -> *) s a.
(Functor f, HasField s "protocolParamUpdate" a) =>
LensLike' f s a
U5c.protocolParamUpdate LensLike' Identity (Proto ParameterChangeAction) (Proto PParams)
-> Proto PParams
-> Proto ParameterChangeAction
-> Proto ParameterChangeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ PParamsUpdate era -> Proto PParams
forall era.
ConwayEraPParams era =>
PParamsUpdate era -> Proto PParams
pparamsUpdateToUtxoRpcPParams PParamsUpdate era
pparamsUpdate
Proto ParameterChangeAction
-> (Proto ParameterChangeAction -> Proto ParameterChangeAction)
-> Proto ParameterChangeAction
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto ParameterChangeAction) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "policyHash" a) =>
LensLike' f s a
U5c.policyHash LensLike' Identity (Proto ParameterChangeAction) ByteString
-> ByteString
-> Proto ParameterChangeAction
-> Proto ParameterChangeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ByteString
-> (ScriptHash -> ByteString)
-> StrictMaybe ScriptHash
-> ByteString
forall a b. a -> (b -> a) -> StrictMaybe b -> a
L.strictMaybe ByteString
forall a. Monoid a => a
mempty ScriptHash -> ByteString
scriptHashToBytes StrictMaybe ScriptHash
guardrailsScriptHash
)
L.HardForkInitiation StrictMaybe (GovPurposeId 'HardForkPurpose)
prevActionId ProtVer
protocolVersion ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage
Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceAction) (Proto HardForkInitiationAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "hardForkInitiationAction" a) =>
LensLike' f s a
U5c.hardForkInitiationAction
LensLike'
Identity (Proto GovernanceAction) (Proto HardForkInitiationAction)
-> Proto HardForkInitiationAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto HardForkInitiationAction
forall msg. Message msg => msg
defMessage
Proto HardForkInitiationAction
-> (Proto HardForkInitiationAction
-> Proto HardForkInitiationAction)
-> Proto HardForkInitiationAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity
(Proto HardForkInitiationAction)
(Maybe (Proto GovernanceActionId))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'govActionId" a) =>
LensLike' f s a
U5c.maybe'govActionId
LensLike'
Identity
(Proto HardForkInitiationAction)
(Maybe (Proto GovernanceActionId))
-> Maybe (Proto GovernanceActionId)
-> Proto HardForkInitiationAction
-> Proto HardForkInitiationAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (GovPurposeId 'HardForkPurpose -> Proto GovernanceActionId)
-> Maybe (GovPurposeId 'HardForkPurpose)
-> Maybe (Proto GovernanceActionId)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId 'HardForkPurpose -> Proto GovernanceActionId
forall (purpose :: GovActionPurpose).
GovPurposeId purpose -> Proto GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId (StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Maybe (GovPurposeId 'HardForkPurpose)
forall a. StrictMaybe a -> Maybe a
L.strictMaybeToMaybe StrictMaybe (GovPurposeId 'HardForkPurpose)
prevActionId)
Proto HardForkInitiationAction
-> (Proto HardForkInitiationAction
-> Proto HardForkInitiationAction)
-> Proto HardForkInitiationAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto HardForkInitiationAction) (Proto ProtocolVersion)
forall (f :: * -> *) s a.
(Functor f, HasField s "protocolVersion" a) =>
LensLike' f s a
U5c.protocolVersion LensLike'
Identity (Proto HardForkInitiationAction) (Proto ProtocolVersion)
-> Proto ProtocolVersion
-> Proto HardForkInitiationAction
-> Proto HardForkInitiationAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ProtVer -> Proto ProtocolVersion
forall t s. Inject t s => t -> s
inject ProtVer
protocolVersion
)
L.TreasuryWithdrawals Map AccountAddress Coin
withdrawals StrictMaybe ScriptHash
guardrailsScriptHash ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage
Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceAction) (Proto TreasuryWithdrawalsAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "treasuryWithdrawalsAction" a) =>
LensLike' f s a
U5c.treasuryWithdrawalsAction
LensLike'
Identity (Proto GovernanceAction) (Proto TreasuryWithdrawalsAction)
-> Proto TreasuryWithdrawalsAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto TreasuryWithdrawalsAction
forall msg. Message msg => msg
defMessage
Proto TreasuryWithdrawalsAction
-> (Proto TreasuryWithdrawalsAction
-> Proto TreasuryWithdrawalsAction)
-> Proto TreasuryWithdrawalsAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto TreasuryWithdrawalsAction) [Proto WithdrawalAmount]
forall (f :: * -> *) s a.
(Functor f, HasField s "withdrawals" a) =>
LensLike' f s a
U5c.withdrawals
LensLike'
Identity (Proto TreasuryWithdrawalsAction) [Proto WithdrawalAmount]
-> [Proto WithdrawalAmount]
-> Proto TreasuryWithdrawalsAction
-> Proto TreasuryWithdrawalsAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Map AccountAddress Coin -> [(AccountAddress, Coin)]
forall k a. Map k a -> [(k, a)]
M.toList Map AccountAddress Coin
withdrawals [(AccountAddress, Coin)]
-> ((AccountAddress, Coin) -> Proto WithdrawalAmount)
-> [Proto WithdrawalAmount]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(AccountAddress
accountAddress, Coin
coin) ->
Proto WithdrawalAmount
forall msg. Message msg => msg
defMessage
Proto WithdrawalAmount
-> (Proto WithdrawalAmount -> Proto WithdrawalAmount)
-> Proto WithdrawalAmount
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WithdrawalAmount) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "rewardAccount" a) =>
LensLike' f s a
U5c.rewardAccount
LensLike' Identity (Proto WithdrawalAmount) ByteString
-> ByteString -> Proto WithdrawalAmount -> Proto WithdrawalAmount
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StakeAddress -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes (AccountAddress -> StakeAddress
fromShelleyStakeAddr AccountAddress
accountAddress)
Proto WithdrawalAmount
-> (Proto WithdrawalAmount -> Proto WithdrawalAmount)
-> Proto WithdrawalAmount
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WithdrawalAmount) (Proto BigInt)
forall (f :: * -> *) s a.
(Functor f, HasField s "coin" a) =>
LensLike' f s a
U5c.coin LensLike' Identity (Proto WithdrawalAmount) (Proto BigInt)
-> Proto BigInt -> Proto WithdrawalAmount -> Proto WithdrawalAmount
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> Proto BigInt
forall t s. Inject t s => t -> s
inject Coin
coin
)
Proto TreasuryWithdrawalsAction
-> (Proto TreasuryWithdrawalsAction
-> Proto TreasuryWithdrawalsAction)
-> Proto TreasuryWithdrawalsAction
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto TreasuryWithdrawalsAction) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "policyHash" a) =>
LensLike' f s a
U5c.policyHash LensLike' Identity (Proto TreasuryWithdrawalsAction) ByteString
-> ByteString
-> Proto TreasuryWithdrawalsAction
-> Proto TreasuryWithdrawalsAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ByteString
-> (ScriptHash -> ByteString)
-> StrictMaybe ScriptHash
-> ByteString
forall a b. a -> (b -> a) -> StrictMaybe b -> a
L.strictMaybe ByteString
forall a. Monoid a => a
mempty ScriptHash -> ByteString
scriptHashToBytes StrictMaybe ScriptHash
guardrailsScriptHash
)
L.NoConfidence StrictMaybe (GovPurposeId 'CommitteePurpose)
prevActionId ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage
Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceAction) (Proto NoConfidenceAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "noConfidenceAction" a) =>
LensLike' f s a
U5c.noConfidenceAction
LensLike'
Identity (Proto GovernanceAction) (Proto NoConfidenceAction)
-> Proto NoConfidenceAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto NoConfidenceAction
forall msg. Message msg => msg
defMessage
Proto NoConfidenceAction
-> (Proto NoConfidenceAction -> Proto NoConfidenceAction)
-> Proto NoConfidenceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity
(Proto NoConfidenceAction)
(Maybe (Proto GovernanceActionId))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'govActionId" a) =>
LensLike' f s a
U5c.maybe'govActionId
LensLike'
Identity
(Proto NoConfidenceAction)
(Maybe (Proto GovernanceActionId))
-> Maybe (Proto GovernanceActionId)
-> Proto NoConfidenceAction
-> Proto NoConfidenceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (GovPurposeId 'CommitteePurpose -> Proto GovernanceActionId)
-> Maybe (GovPurposeId 'CommitteePurpose)
-> Maybe (Proto GovernanceActionId)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId 'CommitteePurpose -> Proto GovernanceActionId
forall (purpose :: GovActionPurpose).
GovPurposeId purpose -> Proto GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId (StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Maybe (GovPurposeId 'CommitteePurpose)
forall a. StrictMaybe a -> Maybe a
L.strictMaybeToMaybe StrictMaybe (GovPurposeId 'CommitteePurpose)
prevActionId)
)
L.UpdateCommittee StrictMaybe (GovPurposeId 'CommitteePurpose)
prevActionId Set (Credential ColdCommitteeRole)
removedMembers Map (Credential ColdCommitteeRole) EpochNo
addedMembers UnitInterval
threshold ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage
Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceAction) (Proto UpdateCommitteeAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "updateCommitteeAction" a) =>
LensLike' f s a
U5c.updateCommitteeAction
LensLike'
Identity (Proto GovernanceAction) (Proto UpdateCommitteeAction)
-> Proto UpdateCommitteeAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto UpdateCommitteeAction
forall msg. Message msg => msg
defMessage
Proto UpdateCommitteeAction
-> (Proto UpdateCommitteeAction -> Proto UpdateCommitteeAction)
-> Proto UpdateCommitteeAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity
(Proto UpdateCommitteeAction)
(Maybe (Proto GovernanceActionId))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'govActionId" a) =>
LensLike' f s a
U5c.maybe'govActionId
LensLike'
Identity
(Proto UpdateCommitteeAction)
(Maybe (Proto GovernanceActionId))
-> Maybe (Proto GovernanceActionId)
-> Proto UpdateCommitteeAction
-> Proto UpdateCommitteeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (GovPurposeId 'CommitteePurpose -> Proto GovernanceActionId)
-> Maybe (GovPurposeId 'CommitteePurpose)
-> Maybe (Proto GovernanceActionId)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId 'CommitteePurpose -> Proto GovernanceActionId
forall (purpose :: GovActionPurpose).
GovPurposeId purpose -> Proto GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId (StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Maybe (GovPurposeId 'CommitteePurpose)
forall a. StrictMaybe a -> Maybe a
L.strictMaybeToMaybe StrictMaybe (GovPurposeId 'CommitteePurpose)
prevActionId)
Proto UpdateCommitteeAction
-> (Proto UpdateCommitteeAction -> Proto UpdateCommitteeAction)
-> Proto UpdateCommitteeAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto UpdateCommitteeAction) [Proto StakeCredential]
forall (f :: * -> *) s a.
(Functor f, HasField s "removeCommitteeCredentials" a) =>
LensLike' f s a
U5c.removeCommitteeCredentials
LensLike'
Identity (Proto UpdateCommitteeAction) [Proto StakeCredential]
-> [Proto StakeCredential]
-> Proto UpdateCommitteeAction
-> Proto UpdateCommitteeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (Credential ColdCommitteeRole -> Proto StakeCredential)
-> [Credential ColdCommitteeRole] -> [Proto StakeCredential]
forall a b. (a -> b) -> [a] -> [b]
map Credential ColdCommitteeRole -> Proto StakeCredential
forall (kr :: KeyRole). Credential kr -> Proto StakeCredential
credentialToUtxoRpcStakeCredential (Set (Credential ColdCommitteeRole)
-> [Credential ColdCommitteeRole]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set (Credential ColdCommitteeRole)
removedMembers)
Proto UpdateCommitteeAction
-> (Proto UpdateCommitteeAction -> Proto UpdateCommitteeAction)
-> Proto UpdateCommitteeAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity
(Proto UpdateCommitteeAction)
[Proto NewCommitteeCredentials]
forall (f :: * -> *) s a.
(Functor f, HasField s "newCommitteeCredentials" a) =>
LensLike' f s a
U5c.newCommitteeCredentials
LensLike'
Identity
(Proto UpdateCommitteeAction)
[Proto NewCommitteeCredentials]
-> [Proto NewCommitteeCredentials]
-> Proto UpdateCommitteeAction
-> Proto UpdateCommitteeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Map (Credential ColdCommitteeRole) EpochNo
-> [(Credential ColdCommitteeRole, EpochNo)]
forall k a. Map k a -> [(k, a)]
M.toList Map (Credential ColdCommitteeRole) EpochNo
addedMembers [(Credential ColdCommitteeRole, EpochNo)]
-> ((Credential ColdCommitteeRole, EpochNo)
-> Proto NewCommitteeCredentials)
-> [Proto NewCommitteeCredentials]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Credential ColdCommitteeRole
coldCredential, EpochNo
expirationEpoch) ->
Proto NewCommitteeCredentials
forall msg. Message msg => msg
defMessage
Proto NewCommitteeCredentials
-> (Proto NewCommitteeCredentials -> Proto NewCommitteeCredentials)
-> Proto NewCommitteeCredentials
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto NewCommitteeCredentials) (Proto StakeCredential)
forall (f :: * -> *) s a.
(Functor f, HasField s "committeeColdCredential" a) =>
LensLike' f s a
U5c.committeeColdCredential
LensLike'
Identity (Proto NewCommitteeCredentials) (Proto StakeCredential)
-> Proto StakeCredential
-> Proto NewCommitteeCredentials
-> Proto NewCommitteeCredentials
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Credential ColdCommitteeRole -> Proto StakeCredential
forall (kr :: KeyRole). Credential kr -> Proto StakeCredential
credentialToUtxoRpcStakeCredential Credential ColdCommitteeRole
coldCredential
Proto NewCommitteeCredentials
-> (Proto NewCommitteeCredentials -> Proto NewCommitteeCredentials)
-> Proto NewCommitteeCredentials
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto NewCommitteeCredentials) Word32
forall (f :: * -> *) s a.
(Functor f, HasField s "expiresEpoch" a) =>
LensLike' f s a
U5c.expiresEpoch LensLike' Identity (Proto NewCommitteeCredentials) Word32
-> Word32
-> Proto NewCommitteeCredentials
-> Proto NewCommitteeCredentials
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (EpochNo -> Word64
L.unEpochNo EpochNo
expirationEpoch)
)
Proto UpdateCommitteeAction
-> (Proto UpdateCommitteeAction -> Proto UpdateCommitteeAction)
-> Proto UpdateCommitteeAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto UpdateCommitteeAction) (Proto RationalNumber)
forall (f :: * -> *) s a.
(Functor f, HasField s "newCommitteeThreshold" a) =>
LensLike' f s a
U5c.newCommitteeThreshold LensLike'
Identity (Proto UpdateCommitteeAction) (Proto RationalNumber)
-> Proto RationalNumber
-> Proto UpdateCommitteeAction
-> Proto UpdateCommitteeAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Ratio Integer -> Proto RationalNumber
forall t s. Inject t s => t -> s
inject (UnitInterval -> Ratio Integer
forall r. BoundedRational r => r -> Ratio Integer
L.unboundRational UnitInterval
threshold)
)
L.NewConstitution StrictMaybe (GovPurposeId 'ConstitutionPurpose)
prevActionId Constitution era
constitution ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage
Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto GovernanceAction) (Proto NewConstitutionAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "newConstitutionAction" a) =>
LensLike' f s a
U5c.newConstitutionAction
LensLike'
Identity (Proto GovernanceAction) (Proto NewConstitutionAction)
-> Proto NewConstitutionAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto NewConstitutionAction
forall msg. Message msg => msg
defMessage
Proto NewConstitutionAction
-> (Proto NewConstitutionAction -> Proto NewConstitutionAction)
-> Proto NewConstitutionAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity
(Proto NewConstitutionAction)
(Maybe (Proto GovernanceActionId))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'govActionId" a) =>
LensLike' f s a
U5c.maybe'govActionId
LensLike'
Identity
(Proto NewConstitutionAction)
(Maybe (Proto GovernanceActionId))
-> Maybe (Proto GovernanceActionId)
-> Proto NewConstitutionAction
-> Proto NewConstitutionAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (GovPurposeId 'ConstitutionPurpose -> Proto GovernanceActionId)
-> Maybe (GovPurposeId 'ConstitutionPurpose)
-> Maybe (Proto GovernanceActionId)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId 'ConstitutionPurpose -> Proto GovernanceActionId
forall (purpose :: GovActionPurpose).
GovPurposeId purpose -> Proto GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId (StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Maybe (GovPurposeId 'ConstitutionPurpose)
forall a. StrictMaybe a -> Maybe a
L.strictMaybeToMaybe StrictMaybe (GovPurposeId 'ConstitutionPurpose)
prevActionId)
Proto NewConstitutionAction
-> (Proto NewConstitutionAction -> Proto NewConstitutionAction)
-> Proto NewConstitutionAction
forall a b. a -> (a -> b) -> b
& LensLike'
Identity (Proto NewConstitutionAction) (Proto Constitution)
forall (f :: * -> *) s a.
(Functor f, HasField s "constitution" a) =>
LensLike' f s a
U5c.constitution
LensLike'
Identity (Proto NewConstitutionAction) (Proto Constitution)
-> Proto Constitution
-> Proto NewConstitutionAction
-> Proto NewConstitutionAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Proto Constitution
forall msg. Message msg => msg
defMessage
Proto Constitution
-> (Proto Constitution -> Proto Constitution) -> Proto Constitution
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Constitution) (Proto Anchor)
forall (f :: * -> *) s a.
(Functor f, HasField s "anchor" a) =>
LensLike' f s a
U5c.anchor LensLike' Identity (Proto Constitution) (Proto Anchor)
-> Proto Anchor -> Proto Constitution -> Proto Constitution
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Anchor -> Proto Anchor
anchorToUtxoRpcAnchor (Constitution era -> Anchor
forall era. Constitution era -> Anchor
L.constitutionAnchor Constitution era
constitution)
Proto Constitution
-> (Proto Constitution -> Proto Constitution) -> Proto Constitution
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Constitution) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "hash" a) =>
LensLike' f s a
U5c.hash
LensLike' Identity (Proto Constitution) ByteString
-> ByteString -> Proto Constitution -> Proto Constitution
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ByteString
-> (ScriptHash -> ByteString)
-> StrictMaybe ScriptHash
-> ByteString
forall a b. a -> (b -> a) -> StrictMaybe b -> a
L.strictMaybe
ByteString
forall a. Monoid a => a
mempty
ScriptHash -> ByteString
scriptHashToBytes
(Constitution era -> StrictMaybe ScriptHash
forall era. Constitution era -> StrictMaybe ScriptHash
L.constitutionGuardrailsScriptHash Constitution era
constitution)
)
)
GovAction era
L.InfoAction ->
Proto GovernanceAction
forall msg. Message msg => msg
defMessage Proto GovernanceAction
-> (Proto GovernanceAction -> Proto GovernanceAction)
-> Proto GovernanceAction
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto GovernanceAction) (Proto InfoAction)
forall (f :: * -> *) s a.
(Functor f, HasField s "infoAction" a) =>
LensLike' f s a
U5c.infoAction LensLike' Identity (Proto GovernanceAction) (Proto InfoAction)
-> Proto InfoAction
-> Proto GovernanceAction
-> Proto GovernanceAction
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Proto InfoAction
forall msg. Message msg => msg
defMessage
govPurposeIdToUtxoRpcGovernanceActionId
:: L.GovPurposeId purpose -> Proto UtxoRpc.GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId :: forall (purpose :: GovActionPurpose).
GovPurposeId purpose -> Proto GovernanceActionId
govPurposeIdToUtxoRpcGovernanceActionId =
GovActionId -> Proto GovernanceActionId
govActionIdToUtxoRpcGovernanceActionId (GovActionId -> Proto GovernanceActionId)
-> (GovPurposeId purpose -> GovActionId)
-> GovPurposeId purpose
-> Proto GovernanceActionId
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GovPurposeId purpose -> GovActionId
forall (p :: GovActionPurpose). GovPurposeId p -> GovActionId
L.unGovPurposeId
govActionIdToUtxoRpcGovernanceActionId :: L.GovActionId -> Proto UtxoRpc.GovernanceActionId
govActionIdToUtxoRpcGovernanceActionId :: GovActionId -> Proto GovernanceActionId
govActionIdToUtxoRpcGovernanceActionId GovActionId
govActionId =
Proto GovernanceActionId
forall msg. Message msg => msg
defMessage
Proto GovernanceActionId
-> (Proto GovernanceActionId -> Proto GovernanceActionId)
-> Proto GovernanceActionId
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto GovernanceActionId) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "transactionId" a) =>
LensLike' f s a
U5c.transactionId LensLike' Identity (Proto GovernanceActionId) ByteString
-> ByteString
-> Proto GovernanceActionId
-> Proto GovernanceActionId
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxId -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes (TxId -> TxId
fromShelleyTxId (GovActionId -> TxId
L.gaidTxId GovActionId
govActionId))
Proto GovernanceActionId
-> (Proto GovernanceActionId -> Proto GovernanceActionId)
-> Proto GovernanceActionId
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto GovernanceActionId) Word32
forall (f :: * -> *) s a.
(Functor f, HasField s "governanceActionIndex" a) =>
LensLike' f s a
U5c.governanceActionIndex LensLike' Identity (Proto GovernanceActionId) Word32
-> Word32 -> Proto GovernanceActionId -> Proto GovernanceActionId
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word16 -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (GovActionIx -> Word16
L.unGovActionIx (GovActionId -> GovActionIx
L.gaidGovActionIx GovActionId
govActionId))