-- | Objects from which a value can be extracted
module Cooked.Conversion.ToValue where

import Cardano.Api.Ledger qualified as Cardano
import Plutus.Script.Utils.Ada qualified as Script
import PlutusLedgerApi.V3 qualified as Api

class ToValue a where
  toValue :: a -> Api.Value

instance ToValue Api.Value where
  toValue :: Value -> Value
toValue = Value -> Value
forall a. a -> a
id

instance ToValue Script.Ada where
  toValue :: Ada -> Value
toValue = Ada -> Value
Script.toValue

instance ToValue Cardano.Coin where
  toValue :: Coin -> Value
toValue (Cardano.Coin Integer
x) = Ada -> Value
forall a. ToValue a => a -> Value
toValue (Integer -> Ada
Script.Lovelace Integer
x)

instance ToValue Api.Lovelace where
  toValue :: Lovelace -> Value
toValue (Api.Lovelace Integer
lv) = Ada -> Value
forall a. ToValue a => a -> Value
toValue (Integer -> Ada
Script.Lovelace Integer
lv)