-- | Objects from which addresses can be extracted
module Cooked.Conversion.ToAddress where

import Cooked.Wallet
import Plutus.Script.Utils.Typed qualified as Script
import PlutusLedgerApi.V3 qualified as Api

class ToAddress a where
  toAddress :: a -> Api.Address

instance ToAddress Wallet where
  toAddress :: Wallet -> Address
toAddress = Wallet -> Address
walletAddress

instance ToAddress Api.Address where
  toAddress :: Address -> Address
toAddress = Address -> Address
forall a. a -> a
id

instance ToAddress (Script.TypedValidator a) where
  toAddress :: TypedValidator a -> Address
toAddress = TypedValidator a -> Address
forall a. TypedValidator a -> Address
Script.validatorAddress