package tf.bug.fancadetagless import tf.bug.fancadegraph.Level import tf.bug.fancadegraph.BlockDefinition import tf.bug.fancadegraph.PinDefinition import tf.bug.fancadegraph.Block import tf.bug.fancadescodec.Position import scalax.collection.Graph import tf.bug.fancadegraph.Argument sealed trait Fancade { val pins: Vector[PinDefinition] def render: Level } object Fancade { final case class Capture[T](newBlock: BlockDefinition[T], args: T, pins: Vector[PinDefinition])(implicit arg: Argument[T]) extends Fancade { override def render: Level = { Level( Set( Block( Position(0, 0, 0), newBlock, args ) ), Graph.empty ) } } final case class Use(inputs: Vector[Fancade]) }