package nl.utwente.viskell.ui.components; import java.util.Map; import java.util.Optional; import java.util.Set; import javafx.scene.layout.Region; import nl.utwente.viskell.haskell.expr.*; import nl.utwente.viskell.haskell.type.*; import nl.utwente.viskell.ui.BlockContainer; public interface FunctionReference { void initializeBlock(Block funBlock); Optional<InputAnchor> getInputAnchor(); int requiredArguments(); Type refreshedType(int argCount, TypeScope scope); Expression getLocalExpr(Set<OutputAnchor> outsideAnchors); void invalidateVisualState(); Region asRegion(); FunctionReference getNewCopy(); String getName(); boolean isScopeCorrectIn(BlockContainer container); void deleteLinks(); Map<String, Object> toBundleFragment(); }