module Cooked.Pretty.Hashable where
import Cooked.Wallet
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.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
walletPKHash
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.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