import ceylon.language.meta.declaration {
    InterfaceDeclaration
}

"An interface model represents the model of a Ceylon interface that you can inspect.
 
 An interface model can be either a toplevel [[Interface]] or a member [[MemberInterface]].
 "
shared sealed interface InterfaceModel<out Type=Anything>
    satisfies ClassOrInterface<Type> {
    
    "The declaration model of this class, 
     which is necessarily an [[InterfaceDeclaration]]."
    shared formal actual InterfaceDeclaration declaration;
}