type-safe SDK