SDKs communicate with Temporal service over gRPC. Here is the API definition. So for simple operations like starting, signaling, and querying workflows writing SDK is as simple as making calls to a generated gRPC client.
Implementing activities is a little harder as SDK has to long poll for activity tasks using PollActivityTaskQueue API and completing them using RespondActivityTaskCompleted or RespondActivityTaskFailed.
Implementing a workflow authoring SDK from scratch is a very large task. I would say a fully-featured SDK would take at least half a year assuming very tight collaboration with our team.
The good news is that to simplify creation of SDKs in other languages we started the development of Rust based core SDK. It would encapsulate at least 80% of the complexity of creating a new SDK. Then you would be able to create Elixir/Erlang SDK either using sdk-core as a library or as a sidecar. This effort is just starting. So it would take at least a quarter to get to the point when it is ready for you to rely on.