~zinigor/cardano-node/trunk

« back to all changes in this revision

Viewing changes to cardano-cli/src/Cardano/CLI/Shelley/Orphans.hs

  • Committer: Igor Zinovyev
  • Date: 2021-08-13 19:12:27 UTC
  • Revision ID: zinigor@gmail.com-20210813191227-stlnsj3mc5ypwn0c
Tags: upstream-1.27.0
ImportĀ upstreamĀ versionĀ 1.27.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{-# LANGUAGE DataKinds #-}
 
2
{-# LANGUAGE DeriveAnyClass #-}
 
3
{-# LANGUAGE DerivingStrategies #-}
 
4
{-# LANGUAGE FlexibleContexts #-}
 
5
{-# LANGUAGE FlexibleInstances #-}
 
6
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
7
{-# LANGUAGE OverloadedStrings #-}
 
8
{-# LANGUAGE StandaloneDeriving #-}
 
9
{-# LANGUAGE TypeFamilies #-}
 
10
{-# LANGUAGE UndecidableInstances #-}
 
11
 
 
12
{-# OPTIONS_GHC -Wno-orphans #-}
 
13
 
 
14
module Cardano.CLI.Shelley.Orphans () where
 
15
 
 
16
import           Cardano.Prelude
 
17
 
 
18
import           Control.SetAlgebra as SetAlgebra
 
19
import           Data.Aeson
 
20
import qualified Data.ByteString.Base16 as Base16
 
21
import qualified Data.ByteString.Short as SBS
 
22
import qualified Data.Text.Encoding as Text
 
23
 
 
24
import           Cardano.Api.Orphans ()
 
25
 
 
26
import           Cardano.Crypto.Hash.Class as Crypto
 
27
 
 
28
import           Ouroboros.Consensus.Byron.Ledger.Block (ByronHash (..))
 
29
import           Ouroboros.Consensus.HardFork.Combinator (OneEraHash (..))
 
30
import           Ouroboros.Consensus.Shelley.Ledger.Block (ShelleyHash (..))
 
31
import           Ouroboros.Consensus.Shelley.Eras (StandardCrypto)
 
32
import           Ouroboros.Network.Block (BlockNo (..), HeaderHash, Tip (..))
 
33
 
 
34
import           Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..))
 
35
 
 
36
import qualified Shelley.Spec.Ledger.API.Protocol as Ledger
 
37
import           Shelley.Spec.Ledger.BlockChain (HashHeader (..))
 
38
import qualified Shelley.Spec.Ledger.Credential as Ledger
 
39
import qualified Shelley.Spec.Ledger.Delegation.Certificates as Ledger
 
40
import qualified Shelley.Spec.Ledger.EpochBoundary as Ledger
 
41
import qualified Shelley.Spec.Ledger.Rewards as Ledger
 
42
import qualified Shelley.Spec.Ledger.STS.Prtcl as Ledger
 
43
import qualified Shelley.Spec.Ledger.STS.Tickn as Ledger
 
44
import           Shelley.Spec.Ledger.TxBody (TxId (..))
 
45
 
 
46
import qualified Cardano.Ledger.Mary.Value as Ledger.Mary
 
47
 
 
48
instance ToJSON (OneEraHash xs) where
 
49
  toJSON = toJSON
 
50
         . Text.decodeLatin1
 
51
         . Base16.encode
 
52
         . SBS.fromShort
 
53
         . getOneEraHash
 
54
 
 
55
deriving newtype instance ToJSON ByronHash
 
56
 
 
57
-- This instance is temporarily duplicated in cardano-config
 
58
 
 
59
instance ToJSON (HeaderHash blk) => ToJSON (Tip blk) where
 
60
  toJSON TipGenesis = object [ "genesis" .= True ]
 
61
  toJSON (Tip slotNo headerHash blockNo) =
 
62
    object
 
63
      [ "slotNo"     .= slotNo
 
64
      , "headerHash" .= headerHash
 
65
      , "blockNo"    .= blockNo
 
66
      ]
 
67
 
 
68
-- This instance is temporarily duplicated in cardano-config
 
69
deriving newtype instance ToJSON BlockNo
 
70
 
 
71
--
 
72
-- Simple newtype wrappers JSON conversion
 
73
--
 
74
 
 
75
deriving newtype instance ToJSON (TxId era)
 
76
 
 
77
deriving newtype instance ToJSON (ShelleyHash era)
 
78
deriving newtype instance ToJSON (HashHeader era)
 
79
 
 
80
deriving newtype instance ToJSON (AuxiliaryDataHash StandardCrypto)
 
81
deriving newtype instance ToJSON Ledger.LogWeight
 
82
deriving newtype instance ToJSON (Ledger.PoolDistr StandardCrypto)
 
83
 
 
84
deriving newtype instance ToJSON (Ledger.Stake StandardCrypto)
 
85
 
 
86
deriving instance ToJSON (Ledger.StakeReference StandardCrypto)
 
87
 
 
88
deriving instance ToJSON (Ledger.PrtclState StandardCrypto)
 
89
deriving instance ToJSON Ledger.TicknState
 
90
deriving instance ToJSON (Ledger.ChainDepState StandardCrypto)
 
91
 
 
92
deriving instance ToJSONKey Ledger.Ptr
 
93
 
 
94
deriving newtype  instance ToJSON    (Ledger.Mary.PolicyID StandardCrypto)
 
95
 
 
96
instance (ToJSONKey k, ToJSON v) => ToJSON (SetAlgebra.BiMap v k v) where
 
97
  toJSON = toJSON . SetAlgebra.forwards -- to normal Map