To help emulate Kotlin's strong typing, use 'brand typing' to specify primitives and value classes. Otherwise TypeScript doesn't discriminate between UInt and Long
Builtin primitives should be handled
type Byte = number & { __kotlin_byte__ : void};
Value classes too
package my.package
@Serializable
@JvmInline
value class UserCount(private val count: UInt)
Something like this...
type UInt = number & { __kotlin_uint__ : void};
type UserCount = UInt & { __my_package__usercount__ : void};