module Cooked.Conversion.ToHash where
import Cooked.Conversion.ToScriptHash
import Cooked.Wallet
import Plutus.Script.Utils.Scripts qualified as Script
import Plutus.Script.Utils.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.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
Script.scriptCurrencySymbol
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
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 Api.Address where
toHash :: Address -> BuiltinByteString
toHash (Api.Address (Api.PubKeyCredential PubKeyHash
pkh) Maybe StakingCredential
_) = PubKeyHash -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash PubKeyHash
pkh
toHash (Api.Address (Api.ScriptCredential ScriptHash
vh) Maybe StakingCredential
_) = ScriptHash -> BuiltinByteString
forall a. ToHash a => a -> BuiltinByteString
toHash ScriptHash
vh