code: package it.unibz.inf.ontop.injection;
  
  import it.unibz.inf.ontop.dbschema.DatabaseInfoSupplier;
  import it.unibz.inf.ontop.iq.node.normalization.ConstructionSubstitutionNormalizer;
  import it.unibz.inf.ontop.iq.type.NotYetTypedEqualityTransformer;
  import it.unibz.inf.ontop.iq.type.PartiallyTypedSimpleCastTransformer;
  import it.unibz.inf.ontop.iq.type.SingleTermTypeExtractor;
  import it.unibz.inf.ontop.model.atom.AtomFactory;
  import it.unibz.inf.ontop.model.term.TermFactory;
  import it.unibz.inf.ontop.model.term.functionsymbol.FunctionSymbolFactory;
  import it.unibz.inf.ontop.model.term.functionsymbol.db.DBFunctionSymbolFactory;
  import it.unibz.inf.ontop.model.type.TypeFactory;
  import it.unibz.inf.ontop.substitution.SubstitutionFactory;
  import it.unibz.inf.ontop.substitution.impl.ImmutableUnificationTools;
  import it.unibz.inf.ontop.utils.CoreUtilsFactory;
  
  /**
   * Helper for accessing (most of) the Guice "singletons" of the ontop-model module
   *
   * Useful for writing low-level classes that are not instantiated by the Guice framework
   */
  public interface CoreSingletons {
  
      TermFactory getTermFactory();
  
      TypeFactory getTypeFactory();
  
      FunctionSymbolFactory getFunctionSymbolFactory();
      DBFunctionSymbolFactory getDBFunctionsymbolFactory();
  
      AtomFactory getAtomFactory();
  
      SubstitutionFactory getSubstitutionFactory();
  
      IntermediateQueryFactory getIQFactory();
  
      CoreUtilsFactory getCoreUtilsFactory();
  
      /**
       * TODO: refactor and remove
       */
      QueryTransformerFactory getQueryTransformerFactory();
  
      SingleTermTypeExtractor getUniqueTermTypeExtractor();
  
      OntopModelSettings getSettings();
  
      ImmutableUnificationTools getUnificationTools();
  
      ConstructionSubstitutionNormalizer getConstructionSubstitutionNormalizer();
  
      NotYetTypedEqualityTransformer getNotYetTypedEqualityTransformer();
  
      PartiallyTypedSimpleCastTransformer getPartiallyTypeSimpleCastTransformer();
  
      DatabaseInfoSupplier getDatabaseInfoSupplier();
      // TODO: complete
  }
  