--- /dev/null
+package org.simantics.scl.compiler.environment;
+
+import java.util.Collection;
+
+import org.simantics.scl.compiler.common.names.Name;
+import org.simantics.scl.compiler.elaboration.contexts.EnvironmentalContext;
+import org.simantics.scl.compiler.elaboration.modules.SCLValue;
+import org.simantics.scl.compiler.elaboration.modules.TypeAlias;
+import org.simantics.scl.compiler.elaboration.modules.TypeClass;
+import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
+import org.simantics.scl.compiler.elaboration.modules.TypeConstructor;
+import org.simantics.scl.compiler.elaboration.relations.SCLEntityType;
+import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
+import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
+import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
+import org.simantics.scl.compiler.types.TCon;
+
+public interface Environment extends EnvironmentalContext {
+ Namespace getLocalNamespace();
+
+ SCLValue getValue(Name name);
+ SCLRelation getRelation(Name name);
+ SCLEntityType getEntityType(Name name);
+ TypeConstructor getTypeConstructor(TCon type);
+ EffectConstructor getEffectConstructor(TCon type);
+ TypeAlias getTypeAlias(TCon type);
+ TypeClass getTypeClass(TCon type);
+ Collection<TypeClassInstance> getInstances(TCon typeClass);
+ void collectRules(Collection<TransformationRule> rules);
+}