-- | Objects from which a versioned script can be extracted
module Cooked.Conversion.ToVersionedScript where

import Plutus.Script.Utils.Scripts qualified as Script
import Plutus.Script.Utils.Typed qualified as Script

class ToVersionedScript a where
  toVersionedScript :: a -> Script.Versioned Script.Script

instance ToVersionedScript (Script.Versioned Script.Script) where
  toVersionedScript :: Versioned Script -> Versioned Script
toVersionedScript = Versioned Script -> Versioned Script
forall a. a -> a
id

instance ToVersionedScript (Script.Versioned Script.Validator) where
  toVersionedScript :: Versioned Validator -> Versioned Script
toVersionedScript (Script.Versioned (Script.Validator Script
script) Language
version) = Script -> Language -> Versioned Script
forall script. script -> Language -> Versioned script
Script.Versioned Script
script Language
version

instance ToVersionedScript (Script.TypedValidator a) where
  toVersionedScript :: TypedValidator a -> Versioned Script
toVersionedScript = Versioned Validator -> Versioned Script
forall a. ToVersionedScript a => a -> Versioned Script
toVersionedScript (Versioned Validator -> Versioned Script)
-> (TypedValidator a -> Versioned Validator)
-> TypedValidator a
-> Versioned Script
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TypedValidator a -> Versioned Validator
forall a. TypedValidator a -> Versioned Validator
Script.vValidatorScript

instance ToVersionedScript (Script.Versioned Script.MintingPolicy) where
  toVersionedScript :: Versioned MintingPolicy -> Versioned Script
toVersionedScript (Script.Versioned (Script.MintingPolicy Script
script) Language
version) = Script -> Language -> Versioned Script
forall script. script -> Language -> Versioned script
Script.Versioned Script
script Language
version