{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}

module Cardano.CLI.EraBased.Governance.Command
  ( GovernanceCmds (..)
  , renderGovernanceCmds
  )
where

import Cardano.CLI.EraBased.Governance.Actions.Command
import Cardano.CLI.EraBased.Governance.Committee.Command
import Cardano.CLI.EraBased.Governance.DRep.Command
import Cardano.CLI.EraBased.Governance.Vote.Command

import Data.Text (Text)

data GovernanceCmds era
  = GovernanceActionCmds
      (GovernanceActionCmds era)
  | GovernanceCommitteeCmds
      (GovernanceCommitteeCmds era)
  | GovernanceDRepCmds
      (GovernanceDRepCmds era)
  | GovernanceVoteCmds
      (GovernanceVoteCmds era)

renderGovernanceCmds :: GovernanceCmds era -> Text
renderGovernanceCmds :: forall era. GovernanceCmds era -> Text
renderGovernanceCmds = \case
  GovernanceActionCmds GovernanceActionCmds era
cmds ->
    GovernanceActionCmds era -> Text
forall era. GovernanceActionCmds era -> Text
renderGovernanceActionCmds GovernanceActionCmds era
cmds
  GovernanceCommitteeCmds GovernanceCommitteeCmds era
cmds ->
    GovernanceCommitteeCmds era -> Text
forall era. GovernanceCommitteeCmds era -> Text
renderGovernanceCommitteeCmds GovernanceCommitteeCmds era
cmds
  GovernanceDRepCmds GovernanceDRepCmds era
cmds ->
    GovernanceDRepCmds era -> Text
forall era. GovernanceDRepCmds era -> Text
renderGovernanceDRepCmds GovernanceDRepCmds era
cmds
  GovernanceVoteCmds GovernanceVoteCmds era
cmds ->
    GovernanceVoteCmds era -> Text
forall era. GovernanceVoteCmds era -> Text
renderGovernanceVoteCmds GovernanceVoteCmds era
cmds