import ceylon.language.meta.model { ClassModel, ClosedType = Type }

"Returns the closed type and model of a given instance. Since only classes
 can be instantiated, this will always be a [[ClassModel]] model."
shared native ClassModel<Type,Nothing> type<out Type>(Type instance)
    given Type satisfies Anything;

"Functional equivalent to type literals. Allows you to get a closed type instance
 for a given type argument.
 
 For example:
 
     assert(is Interface<List<Integer>> listOfIntegers = typeLiteral<List<Integer>>());
 "
shared native ClosedType<Type> typeLiteral<out Type>()
    given Type satisfies Anything;