Opaque result types

My question is how .swiftinterface describes globalValue1 and globalValue2 has the same type?
In this case, .swiftinterface for module A would be:

public protocol P {
}
public var globalValue1: opaque P { get set }
public var globalValue2: opaque P { get set }

We can't expose generateP() here, right?