import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.lang.IllegalStateException; import java.io.IOException; import java.io.DataInput; public class TdApi { public abstract static class Object { public native String toString(); public abstract int getConstructor(); public byte[] serialize() throws IOException { try(var baos = new ByteArrayOutputStream()) { try(var out = new DataOutputStream(baos)) { serialize(out); return baos.toByteArray(); } } } public abstract void serialize(DataOutputStream out) throws IOException; } public abstract static class Function extends Object { public native String toString(); }