There is an example of how to implement and extend static APIs here.
To properly implement static typisation for SDK there is several major parts:
First thing that should be known to write proper static types is the Core Protocols. This protocols used inside SDK for encoding/decoding, type validation, type conversion, etc.
Next is a Frame Types, which use this core protocols to implement Frame primitives like Call, Events, Constants, Storage Keys, Runtime Calls.
Config is an protocol, which provides config for main Api object. It provides types and needed dynamic configuation, like Address, Account, Hasher types, etc.
And there are API Extensions, which use frame types and special extension points to provide developer-friendly top-level APIs.