module Cooked.Conversion.ToCredential 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 ToCredential a where
toCredential :: a -> Api.Credential
instance (ToCredential a, ToCredential b) => ToCredential (Either a b) where
toCredential :: Either a b -> Credential
toCredential (Left a
l) = a -> Credential
forall a. ToCredential a => a -> Credential
toCredential a
l
toCredential (Right b
r) = b -> Credential
forall a. ToCredential a => a -> Credential
toCredential b
r
instance ToCredential Api.Credential where
toCredential :: Credential -> Credential
toCredential = Credential -> Credential
forall a. a -> a
id
instance ToCredential Api.Address where
toCredential :: Address -> Credential
toCredential (Api.Address Credential
cred Maybe StakingCredential
_) = Credential
cred
instance ToCredential Api.PubKeyHash where
toCredential :: PubKeyHash -> Credential
toCredential = PubKeyHash -> Credential
Api.PubKeyCredential
instance ToCredential Wallet where
toCredential :: Wallet -> Credential
toCredential = PubKeyHash -> Credential
forall a. ToCredential a => a -> Credential
toCredential (PubKeyHash -> Credential)
-> (Wallet -> PubKeyHash) -> Wallet -> Credential
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Wallet -> PubKeyHash
walletPKHash
instance ToCredential Api.ScriptHash where
toCredential :: ScriptHash -> Credential
toCredential = ScriptHash -> Credential
Api.ScriptCredential
instance ToCredential Script.ValidatorHash where
toCredential :: ValidatorHash -> Credential
toCredential = ScriptHash -> Credential
forall a. ToCredential a => a -> Credential
toCredential (ScriptHash -> Credential)
-> (ValidatorHash -> ScriptHash) -> ValidatorHash -> Credential
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ValidatorHash -> ScriptHash
forall a. ToScriptHash a => a -> ScriptHash
toScriptHash
instance ToCredential (Script.Versioned Script.Script) where
toCredential :: Versioned Script -> Credential
toCredential = ScriptHash -> Credential
forall a. ToCredential a => a -> Credential
toCredential (ScriptHash -> Credential)
-> (Versioned Script -> ScriptHash)
-> Versioned Script
-> Credential
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Versioned Script -> ScriptHash
forall a. ToScriptHash a => a -> ScriptHash
toScriptHash
instance ToCredential (Script.Versioned Script.Validator) where
toCredential :: Versioned Validator -> Credential
toCredential = ScriptHash -> Credential
forall a. ToCredential a => a -> Credential
toCredential (ScriptHash -> Credential)
-> (Versioned Validator -> ScriptHash)
-> Versioned Validator
-> Credential
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Versioned Validator -> ScriptHash
forall a. ToScriptHash a => a -> ScriptHash
toScriptHash
instance ToCredential (Script.TypedValidator a) where
toCredential :: TypedValidator a -> Credential
toCredential = ScriptHash -> Credential
forall a. ToCredential a => a -> Credential
toCredential (ScriptHash -> Credential)
-> (TypedValidator a -> ScriptHash)
-> TypedValidator a
-> Credential
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypedValidator a -> ScriptHash
forall a. ToScriptHash a => a -> ScriptHash
toScriptHash
instance ToCredential (Script.Versioned Script.MintingPolicy) where
toCredential :: Versioned MintingPolicy -> Credential
toCredential = ScriptHash -> Credential
forall a. ToCredential a => a -> Credential
toCredential (ScriptHash -> Credential)
-> (Versioned MintingPolicy -> ScriptHash)
-> Versioned MintingPolicy
-> Credential
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Versioned MintingPolicy -> ScriptHash
forall a. ToScriptHash a => a -> ScriptHash
toScriptHash