module Cooked.Pretty.Hashable where
import Cooked.Wallet
import Plutus.Script.Utils.Address qualified as Script
import Plutus.Script.Utils.Data qualified as Script
import Plutus.Script.Utils.Scripts qualified as Script
import Plutus.Script.Utils.V1.Typed qualified as Script
import Plutus.Script.Utils.V3.Typed qualified as Script
import PlutusLedgerApi.V3 qualified as Api
class ToHash a where
toHash :: a -> Api.BuiltinByteString
instance ToHash Api.BuiltinByteString where
toHash :: BuiltinByteString -> BuiltinByteString
toHash = BuiltinByteString -> BuiltinByteString
forall a. a -> a
id
instance ToHash Api.CurrencySymbol where
toHash :: CurrencySymbol -> BuiltinByteString
toHash = CurrencySymbol -> BuiltinByteString
Api.unCurrencySymbol
instance ToHash Api.TokenName where
toHash :: TokenName -> BuiltinByteString
toHash = TokenName -> BuiltinByteString
Api.unTokenName
instance ToHash Api.PubKeyHash where
toHash :: PubKeyHash -> BuiltinByteString
toHash = PubKeyHash -> BuiltinByteString
Api.getPubKeyHash
instance ToHash Wallet where
toHash :: Wallet -> BuiltinByteString
toHash = PubKeyHash -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (PubKeyHash -> BuiltinByteString)
-> (Wallet -> PubKeyHash) -> Wallet -> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Wallet -> PubKeyHash
forall a. ToPubKeyHash a => a -> PubKeyHash
Script.toPubKeyHash
instance ToHash (Script.Versioned Script.MintingPolicy) where
toHash :: Versioned MintingPolicy -> BuiltinByteString
toHash = CurrencySymbol -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (CurrencySymbol -> BuiltinByteString)
-> (Versioned MintingPolicy -> CurrencySymbol)
-> Versioned MintingPolicy
-> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Versioned MintingPolicy -> CurrencySymbol
forall script.
ToMintingPolicyHash script =>
script -> CurrencySymbol
Script.toCurrencySymbol
instance ToHash (Script.Versioned Script.Script) where
toHash :: Versioned Script -> BuiltinByteString
toHash = ScriptHash -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (ScriptHash -> BuiltinByteString)
-> (Versioned Script -> ScriptHash)
-> Versioned Script
-> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Versioned Script -> ScriptHash
forall a. ToScriptHash a => a -> ScriptHash
Script.toScriptHash
instance ToHash Script.ScriptHash where
toHash :: ScriptHash -> BuiltinByteString
toHash = ScriptHash -> BuiltinByteString
Script.getScriptHash
instance ToHash Script.ValidatorHash where
toHash :: ValidatorHash -> BuiltinByteString
toHash = ValidatorHash -> BuiltinByteString
Script.getValidatorHash
instance ToHash (Script.TypedValidator a) where
toHash :: TypedValidator a -> BuiltinByteString
toHash = ValidatorHash -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (ValidatorHash -> BuiltinByteString)
-> (TypedValidator a -> ValidatorHash)
-> TypedValidator a
-> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypedValidator a -> ValidatorHash
forall a. TypedValidator a -> ValidatorHash
Script.tvValidatorHash
instance ToHash Api.DatumHash where
toHash :: DatumHash -> BuiltinByteString
toHash (Api.DatumHash BuiltinByteString
hash) = BuiltinByteString
hash
instance ToHash Api.Datum where
toHash :: Datum -> BuiltinByteString
toHash = DatumHash -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (DatumHash -> BuiltinByteString)
-> (Datum -> DatumHash) -> Datum -> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Datum -> DatumHash
Script.datumHash
instance ToHash Api.BuiltinData where
toHash :: BuiltinData -> BuiltinByteString
toHash = BuiltinByteString -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (BuiltinByteString -> BuiltinByteString)
-> (BuiltinData -> BuiltinByteString)
-> BuiltinData
-> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BuiltinData -> BuiltinByteString
Script.dataHash
instance ToHash Api.TxId where
toHash :: TxId -> BuiltinByteString
toHash = TxId -> BuiltinByteString
Api.getTxId
instance ToHash (Script.MultiPurposeScript a) where
toHash :: MultiPurposeScript a -> BuiltinByteString
toHash = Versioned Script -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash (Versioned Script -> BuiltinByteString)
-> (MultiPurposeScript a -> Versioned Script)
-> MultiPurposeScript a
-> BuiltinByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. ToVersioned s a => a -> Versioned s
Script.toVersioned @Script.Script