type Status* = uint32
type Dep* = object
a: int32
b: float32
type Foo*[X] = object
a: X
b: X
c: Dep
type IntFoo* = Foo[int32]
type DoubleFoo* = Foo[float64]
type Unit* = int32
type SpecialStatus* = Status
proc root*(x: IntFoo, y: DoubleFoo, z: Unit, w: SpecialStatus) {.importc: "root".}