using InvercargillSql.Orm.Projections; namespace InvercargillSql.Orm { /** * Interface for providing entity mappers and projection definitions. * This interface allows OrmSession to be decoupled from the concrete TypeRegistry, * enabling custom implementations for testing or alternative registration strategies. */ public interface TypeProvider : Object { // Entity methods - non-generic versions taking Type parameter public abstract bool has_mapper_for_type(Type type); public abstract EntityMapper? get_mapper_for_type(Type type); // Entity methods - generic convenience versions public abstract bool has_mapper(); public abstract EntityMapper get_mapper() throws SqlError; // Projection methods - non-generic versions taking Type parameter public abstract bool has_projection_for_type(Type type); public abstract ProjectionDefinition? get_projection_for_type(Type type); // Projection methods - generic convenience versions public abstract bool has_projection(); public abstract ProjectionDefinition? get_projection(); } }