MTProtoScheme.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900
  1. /*
  2. * This is the source code of tgnet library v. 1.1
  3. * It is licensed under GNU GPL v. 2 or later.
  4. * You should have received a copy of the license in this archive (see LICENSE).
  5. *
  6. * Copyright Nikolai Kudashov, 2015-2018.
  7. */
  8. #ifndef MTPROTOSCHEME_H
  9. #define MTPROTOSCHEME_H
  10. #include <vector>
  11. #include <memory>
  12. #include <map>
  13. #include "TLObject.h"
  14. class ByteArray;
  15. class NativeByteBuffer;
  16. class TLClassStore {
  17. public:
  18. static TLObject *TLdeserialize(NativeByteBuffer *stream, uint32_t bytes, uint32_t constructor, int32_t instanceNum, bool &error);
  19. };
  20. class TL_api_request : public TLObject {
  21. public:
  22. NativeByteBuffer *request = nullptr;
  23. ~TL_api_request();
  24. bool isNeedLayer();
  25. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t bytes, int32_t instanceNum, bool &error);
  26. void serializeToStream(NativeByteBuffer *stream);
  27. };
  28. class TL_api_response : public TLObject {
  29. public:
  30. std::unique_ptr<NativeByteBuffer> response;
  31. void readParamsEx(NativeByteBuffer *stream, uint32_t bytes, bool &error);
  32. };
  33. class TL_future_salt : public TLObject {
  34. public:
  35. static const uint32_t constructor = 0x0949d9dc;
  36. int32_t valid_since;
  37. int32_t valid_until;
  38. int64_t salt;
  39. static TL_future_salt *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  40. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  41. };
  42. class TL_msgs_state_info : public TLObject {
  43. public:
  44. static const uint32_t constructor = 0x04deb57d;
  45. int64_t req_msg_id;
  46. std::unique_ptr<ByteArray> info;
  47. static TL_msgs_state_info *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  48. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  49. void serializeToStream(NativeByteBuffer *stream);
  50. };
  51. class Server_DH_Params : public TLObject {
  52. public:
  53. std::unique_ptr<ByteArray> nonce;
  54. std::unique_ptr<ByteArray> server_nonce;
  55. std::unique_ptr<ByteArray> new_nonce_hash;
  56. std::unique_ptr<ByteArray> encrypted_answer;
  57. static Server_DH_Params *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  58. };
  59. class TL_server_DH_params_fail : public Server_DH_Params {
  60. public:
  61. static const uint32_t constructor = 0x79cb045d;
  62. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  63. };
  64. class TL_server_DH_params_ok : public Server_DH_Params {
  65. public:
  66. static const uint32_t constructor = 0xd0e8075c;
  67. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  68. };
  69. class TL_resPQ : public TLObject {
  70. public:
  71. static const uint32_t constructor = 0x05162463;
  72. std::unique_ptr<ByteArray> nonce;
  73. std::unique_ptr<ByteArray> server_nonce;
  74. std::unique_ptr<ByteArray> pq;
  75. std::vector<int64_t> server_public_key_fingerprints;
  76. static TL_resPQ *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  77. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  78. };
  79. /*
  80. p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data;
  81. p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 expires_in:int = P_Q_inner_data;
  82. */
  83. class TL_p_q_inner_data : public TLObject {
  84. public:
  85. static const uint32_t constructor = 0x83c95aec;
  86. std::unique_ptr<ByteArray> pq;
  87. std::unique_ptr<ByteArray> p;
  88. std::unique_ptr<ByteArray> q;
  89. std::unique_ptr<ByteArray> nonce;
  90. std::unique_ptr<ByteArray> server_nonce;
  91. std::unique_ptr<ByteArray> new_nonce;
  92. void serializeToStream(NativeByteBuffer *stream);
  93. };
  94. class TL_p_q_inner_data_dc : public TLObject {
  95. public:
  96. static const uint32_t constructor = 0xa9f55f95;
  97. std::unique_ptr<ByteArray> pq;
  98. std::unique_ptr<ByteArray> p;
  99. std::unique_ptr<ByteArray> q;
  100. std::unique_ptr<ByteArray> nonce;
  101. std::unique_ptr<ByteArray> server_nonce;
  102. std::unique_ptr<ByteArray> new_nonce;
  103. int32_t dc;
  104. void serializeToStream(NativeByteBuffer *stream);
  105. };
  106. class TL_p_q_inner_data_temp : public TLObject {
  107. public:
  108. static const uint32_t constructor = 0x3c6a84d4;
  109. std::unique_ptr<ByteArray> pq;
  110. std::unique_ptr<ByteArray> p;
  111. std::unique_ptr<ByteArray> q;
  112. std::unique_ptr<ByteArray> nonce;
  113. std::unique_ptr<ByteArray> server_nonce;
  114. std::unique_ptr<ByteArray> new_nonce;
  115. int32_t expires_in;
  116. void serializeToStream(NativeByteBuffer *stream);
  117. };
  118. class TL_p_q_inner_data_temp_dc : public TLObject {
  119. public:
  120. static const uint32_t constructor = 0x56fddf88;
  121. std::unique_ptr<ByteArray> pq;
  122. std::unique_ptr<ByteArray> p;
  123. std::unique_ptr<ByteArray> q;
  124. std::unique_ptr<ByteArray> nonce;
  125. std::unique_ptr<ByteArray> server_nonce;
  126. std::unique_ptr<ByteArray> new_nonce;
  127. int32_t dc;
  128. int32_t expires_in;
  129. void serializeToStream(NativeByteBuffer *stream);
  130. };
  131. class TL_bind_auth_key_inner : public TLObject {
  132. public:
  133. static const uint32_t constructor = 0x75a3f765;
  134. int64_t nonce;
  135. int64_t temp_auth_key_id;
  136. int64_t perm_auth_key_id;
  137. int64_t temp_session_id;
  138. int32_t expires_at;
  139. void serializeToStream(NativeByteBuffer *stream);
  140. };
  141. class TL_auth_bindTempAuthKey : public TLObject {
  142. public:
  143. static const uint32_t constructor = 0xcdd42a05;
  144. int64_t perm_auth_key_id;
  145. int64_t nonce;
  146. int32_t expires_at;
  147. NativeByteBuffer *encrypted_message = nullptr;
  148. ~TL_auth_bindTempAuthKey();
  149. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  150. void serializeToStream(NativeByteBuffer *stream);
  151. };
  152. class TL_auth_dropTempAuthKeys : public TLObject {
  153. public:
  154. static const uint32_t constructor = 0x8e48a188;
  155. std::vector<int64_t> except_auth_keys;
  156. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  157. void serializeToStream(NativeByteBuffer *stream);
  158. };
  159. class TL_pong : public TLObject {
  160. public:
  161. static const uint32_t constructor = 0x347773c5;
  162. int64_t msg_id;
  163. int64_t ping_id;
  164. static TL_pong *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  165. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  166. };
  167. class TL_future_salts : public TLObject {
  168. public:
  169. static const uint32_t constructor = 0xae500895;
  170. int64_t req_msg_id;
  171. int32_t now;
  172. std::vector<std::unique_ptr<TL_future_salt>> salts;
  173. static TL_future_salts *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  174. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  175. };
  176. class RpcDropAnswer : public TLObject {
  177. public:
  178. int64_t msg_id;
  179. int32_t seq_no;
  180. int32_t bytes;
  181. static RpcDropAnswer *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  182. };
  183. class TL_rpc_answer_unknown : public RpcDropAnswer {
  184. public:
  185. static const uint32_t constructor = 0x5e2ad36e;
  186. void serializeToStream(NativeByteBuffer *stream);
  187. };
  188. class TL_rpc_answer_dropped : public RpcDropAnswer {
  189. public:
  190. static const uint32_t constructor = 0xa43ad8b7;
  191. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  192. };
  193. class TL_rpc_answer_dropped_running : public RpcDropAnswer {
  194. public:
  195. static const uint32_t constructor = 0xcd78e586;
  196. void serializeToStream(NativeByteBuffer *stream);
  197. };
  198. class Set_client_DH_params_answer : public TLObject {
  199. public:
  200. std::unique_ptr<ByteArray> nonce;
  201. std::unique_ptr<ByteArray> server_nonce;
  202. std::unique_ptr<ByteArray> new_nonce_hash2;
  203. std::unique_ptr<ByteArray> new_nonce_hash3;
  204. std::unique_ptr<ByteArray> new_nonce_hash1;
  205. static Set_client_DH_params_answer *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  206. };
  207. class TL_message : public TLObject {
  208. public:
  209. static const uint32_t constructor = 0x5bb8e511;
  210. int64_t msg_id;
  211. int32_t seqno;
  212. int32_t bytes;
  213. std::unique_ptr<TLObject> body;
  214. TLObject *outgoingBody = nullptr;
  215. std::unique_ptr<NativeByteBuffer> unparsedBody;
  216. static TL_message *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  217. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  218. void serializeToStream(NativeByteBuffer *stream);
  219. };
  220. class TL_dh_gen_retry : public Set_client_DH_params_answer {
  221. public:
  222. static const uint32_t constructor = 0x46dc1fb9;
  223. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  224. };
  225. class TL_dh_gen_fail : public Set_client_DH_params_answer {
  226. public:
  227. static const uint32_t constructor = 0xa69dae02;
  228. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  229. };
  230. class TL_dh_gen_ok : public Set_client_DH_params_answer {
  231. public:
  232. static const uint32_t constructor = 0x3bcbf734;
  233. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  234. };
  235. class BadMsgNotification : public TLObject {
  236. public:
  237. int64_t bad_msg_id;
  238. int32_t bad_msg_seqno;
  239. int32_t error_code;
  240. int64_t new_server_salt;
  241. static BadMsgNotification *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  242. };
  243. class TL_bad_msg_notification : public BadMsgNotification {
  244. public:
  245. static const uint32_t constructor = 0xa7eff811;
  246. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  247. };
  248. class TL_bad_server_salt : public BadMsgNotification {
  249. public:
  250. static const uint32_t constructor = 0xedab447b;
  251. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  252. };
  253. class TL_msgs_state_req : public TLObject {
  254. public:
  255. static const uint32_t constructor = 0xda69fb52;
  256. std::vector<int64_t> msg_ids;
  257. static TL_msgs_state_req *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  258. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  259. void serializeToStream(NativeByteBuffer *stream);
  260. };
  261. class MsgDetailedInfo : public TLObject {
  262. public:
  263. int64_t answer_msg_id;
  264. int32_t bytes;
  265. int32_t status;
  266. int64_t msg_id;
  267. static MsgDetailedInfo *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  268. };
  269. class TL_msg_new_detailed_info : public MsgDetailedInfo {
  270. public:
  271. static const uint32_t constructor = 0x809db6df;
  272. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  273. };
  274. class TL_msg_detailed_info : public MsgDetailedInfo {
  275. public:
  276. static const uint32_t constructor = 0x276d3ec6;
  277. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  278. };
  279. class TL_msg_copy : public TLObject {
  280. public:
  281. static const uint32_t constructor = 0xe06046b2;
  282. std::unique_ptr<TL_message> orig_message;
  283. static TL_msg_copy *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  284. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  285. void serializeToStream(NativeByteBuffer *stream);
  286. };
  287. class TL_msgs_all_info : public TLObject {
  288. public:
  289. static const uint32_t constructor = 0x8cc0d131;
  290. std::vector<int64_t> msg_ids;
  291. std::unique_ptr<ByteArray> info;
  292. static TL_msgs_all_info *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  293. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  294. };
  295. class TL_rpc_result : public TLObject {
  296. public:
  297. static const uint32_t constructor = 0xf35c6d01;
  298. int64_t req_msg_id;
  299. std::unique_ptr<TLObject> result;
  300. void readParamsEx(NativeByteBuffer *stream, uint32_t bytes, int32_t instanceNum, bool &error);
  301. };
  302. class TL_new_session_created : public TLObject {
  303. public:
  304. static const uint32_t constructor = 0x9ec20908;
  305. int64_t first_msg_id;
  306. int64_t unique_id;
  307. int64_t server_salt;
  308. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  309. };
  310. class DestroySessionRes : public TLObject {
  311. public:
  312. int64_t session_id;
  313. static DestroySessionRes *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  314. };
  315. class TL_destroy_session_ok : public DestroySessionRes {
  316. public:
  317. static const uint32_t constructor = 0xe22045fc;
  318. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  319. };
  320. class TL_destroy_session_none : public DestroySessionRes {
  321. public:
  322. static const uint32_t constructor = 0x62d350c9;
  323. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  324. };
  325. class TL_msgs_ack : public TLObject {
  326. public:
  327. static const uint32_t constructor = 0x62d6b459;
  328. std::vector<int64_t> msg_ids;
  329. static TL_msgs_ack *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  330. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  331. void serializeToStream(NativeByteBuffer *stream);
  332. };
  333. class TL_msg_container : public TLObject {
  334. public:
  335. static const uint32_t constructor = 0x73f1f8dc;
  336. std::vector<std::unique_ptr<TL_message>> messages;
  337. static TL_msg_container *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  338. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  339. void serializeToStream(NativeByteBuffer *stream);
  340. };
  341. class TL_msg_resend_req : public TLObject {
  342. public:
  343. static const uint32_t constructor = 0x7d861a08;
  344. std::vector<int64_t> msg_ids;
  345. static TL_msg_resend_req *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  346. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  347. void serializeToStream(NativeByteBuffer *stream);
  348. };
  349. class MsgsStateInfo : public TLObject {
  350. public:
  351. static const uint32_t constructor = 0x04deb57d;
  352. int64_t req_msg_id;
  353. std::string info;
  354. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  355. };
  356. class RpcError : public TLObject {
  357. public:
  358. int32_t error_code;
  359. std::string error_message;
  360. int64_t query_id;
  361. };
  362. class TL_rpc_error : public RpcError {
  363. public:
  364. static const uint32_t constructor = 0x2144ca19;
  365. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  366. };
  367. class TL_rpc_req_error : public RpcError {
  368. public:
  369. static const uint32_t constructor = 0x7ae432f5;
  370. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  371. };
  372. class TL_client_DH_inner_data : public TLObject {
  373. public:
  374. static const uint32_t constructor = 0x6643b654;
  375. std::unique_ptr<ByteArray> nonce;
  376. std::unique_ptr<ByteArray> server_nonce;
  377. int64_t retry_id;
  378. std::unique_ptr<ByteArray> g_b;
  379. void serializeToStream(NativeByteBuffer *stream);
  380. };
  381. class TL_server_DH_inner_data : public TLObject {
  382. public:
  383. static const uint32_t constructor = 0xb5890dba;
  384. std::unique_ptr<ByteArray> nonce;
  385. std::unique_ptr<ByteArray> server_nonce;
  386. uint32_t g;
  387. std::unique_ptr<ByteArray> dh_prime;
  388. std::unique_ptr<ByteArray> g_a;
  389. int32_t server_time;
  390. static TL_server_DH_inner_data *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  391. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  392. void serializeToStream(NativeByteBuffer *stream);
  393. };
  394. class TL_req_pq : public TLObject {
  395. public:
  396. static const uint32_t constructor = 0x60469778;
  397. std::unique_ptr<ByteArray> nonce;
  398. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  399. void serializeToStream(NativeByteBuffer *stream);
  400. };
  401. class TL_req_pq_multi : public TLObject {
  402. public:
  403. static const uint32_t constructor = 0xbe7e8ef1;
  404. std::unique_ptr<ByteArray> nonce;
  405. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  406. void serializeToStream(NativeByteBuffer *stream);
  407. };
  408. class TL_req_DH_params : public TLObject {
  409. public:
  410. static const uint32_t constructor = 0xd712e4be;
  411. std::unique_ptr<ByteArray> nonce;
  412. std::unique_ptr<ByteArray> server_nonce;
  413. std::unique_ptr<ByteArray> p;
  414. std::unique_ptr<ByteArray> q;
  415. int64_t public_key_fingerprint;
  416. std::unique_ptr<ByteArray> encrypted_data;
  417. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  418. void serializeToStream(NativeByteBuffer *stream);
  419. };
  420. class TL_set_client_DH_params : public TLObject {
  421. public:
  422. static const uint32_t constructor = 0xf5045f1f;
  423. std::unique_ptr<ByteArray> nonce;
  424. std::unique_ptr<ByteArray> server_nonce;
  425. std::unique_ptr<ByteArray> encrypted_data;
  426. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  427. void serializeToStream(NativeByteBuffer *stream);
  428. };
  429. class TL_rpc_drop_answer : public TLObject {
  430. public:
  431. static const uint32_t constructor = 0x58e4a740;
  432. int64_t req_msg_id;
  433. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  434. void serializeToStream(NativeByteBuffer *stream);
  435. };
  436. class TL_get_future_salts : public TLObject {
  437. public:
  438. static const uint32_t constructor = 0xb921bd04;
  439. int32_t num;
  440. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  441. void serializeToStream(NativeByteBuffer *stream);
  442. };
  443. class TL_ping : public TLObject {
  444. public:
  445. static const uint32_t constructor = 0x7abe77ec;
  446. int64_t ping_id;
  447. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  448. void serializeToStream(NativeByteBuffer *stream);
  449. };
  450. class TL_ping_delay_disconnect : public TLObject {
  451. public:
  452. static const uint32_t constructor = 0xf3427b8c;
  453. int64_t ping_id;
  454. int32_t disconnect_delay;
  455. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  456. void serializeToStream(NativeByteBuffer *stream);
  457. };
  458. class TL_destroy_session : public TLObject {
  459. public:
  460. static const uint32_t constructor = 0xe7512126;
  461. int64_t session_id;
  462. TLObject *deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  463. void serializeToStream(NativeByteBuffer *stream);
  464. };
  465. class TL_gzip_packed : public TLObject {
  466. public:
  467. static const uint32_t constructor = 0x3072cfa1;
  468. NativeByteBuffer *packed_data_to_send = nullptr;
  469. std::unique_ptr<NativeByteBuffer> packed_data;
  470. std::unique_ptr<TLObject> originalRequest;
  471. ~TL_gzip_packed();
  472. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  473. void serializeToStream(NativeByteBuffer *stream);
  474. };
  475. class TL_error : public TLObject {
  476. public:
  477. static const uint32_t constructor = 0xc4b9f9bb;
  478. int32_t code;
  479. std::string text;
  480. static TL_error *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  481. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  482. void serializeToStream(NativeByteBuffer *stream);
  483. };
  484. class TL_invokeAfterMsg : public TLObject {
  485. public:
  486. static const uint32_t constructor = 0xcb9f372d;
  487. int64_t msg_id;
  488. TLObject *outgoingQuery = nullptr;
  489. std::unique_ptr<TLObject> query;
  490. void serializeToStream(NativeByteBuffer *stream);
  491. };
  492. class invokeWithLayer : public TLObject {
  493. public:
  494. static const uint32_t constructor = 0xda9b0d0d;
  495. int32_t layer;
  496. std::unique_ptr<TLObject> query;
  497. void serializeToStream(NativeByteBuffer *stream);
  498. };
  499. class TL_inputClientProxy : public TLObject {
  500. public:
  501. static const uint32_t constructor = 0x75588b3f;
  502. std::string address;
  503. int32_t port;
  504. void serializeToStream(NativeByteBuffer *stream);
  505. };
  506. class JSONValue : public TLObject {
  507. public:
  508. static JSONValue *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  509. };
  510. class TL_jsonObjectValue : public TLObject {
  511. public:
  512. static const uint32_t constructor = 0xc0de1bd9;
  513. std::string key;
  514. std::unique_ptr<JSONValue> value;
  515. static TL_jsonObjectValue *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  516. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  517. void serializeToStream(NativeByteBuffer *stream);
  518. };
  519. class TL_jsonBool : public JSONValue {
  520. public:
  521. static const uint32_t constructor = 0xc7345e6a;
  522. bool value;
  523. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  524. void serializeToStream(NativeByteBuffer *stream);
  525. };
  526. class TL_jsonNull : public JSONValue {
  527. public:
  528. static const uint32_t constructor = 0x3f6d7b68;
  529. void serializeToStream(NativeByteBuffer *stream);
  530. };
  531. class TL_jsonString : public JSONValue {
  532. public:
  533. static const uint32_t constructor = 0xb71e767a;
  534. std::string value;
  535. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  536. void serializeToStream(NativeByteBuffer *stream);
  537. };
  538. class TL_jsonArray : public JSONValue {
  539. public:
  540. static const uint32_t constructor = 0xf7444763;
  541. std::vector<std::unique_ptr<JSONValue>> value;
  542. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  543. void serializeToStream(NativeByteBuffer *stream);
  544. };
  545. class TL_jsonObject : public JSONValue {
  546. public:
  547. static const uint32_t constructor = 0x99c1d49d;
  548. std::vector<std::unique_ptr<TL_jsonObjectValue>> value;
  549. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  550. void serializeToStream(NativeByteBuffer *stream);
  551. };
  552. class TL_jsonNumber : public JSONValue {
  553. public:
  554. static const uint32_t constructor = 0x2be0dfa4;
  555. double value;
  556. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  557. void serializeToStream(NativeByteBuffer *stream);
  558. };
  559. class initConnection : public TLObject {
  560. public:
  561. static const uint32_t constructor = 0xc1cd5ea9;
  562. int32_t flags;
  563. int32_t api_id;
  564. std::string device_model;
  565. std::string system_version;
  566. std::string app_version;
  567. std::string system_lang_code;
  568. std::string lang_pack;
  569. std::string lang_code;
  570. std::unique_ptr<TL_inputClientProxy> proxy;
  571. std::unique_ptr<JSONValue> params;
  572. std::unique_ptr<TLObject> query;
  573. void serializeToStream(NativeByteBuffer *stream);
  574. };
  575. class IpPort : public TLObject {
  576. public:
  577. static IpPort *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  578. };
  579. class TL_ipPort : public IpPort {
  580. public:
  581. static const int32_t constructor = 0xd433ad73;
  582. std::string ipv4;
  583. uint32_t port;
  584. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  585. };
  586. class TL_ipPortSecret : public IpPort {
  587. public:
  588. static const int32_t constructor = 0x37982646;
  589. std::string ipv4;
  590. uint32_t port;
  591. std::unique_ptr<ByteArray> secret;
  592. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  593. };
  594. class TL_accessPointRule : public TLObject {
  595. public:
  596. static const int32_t constructor = 0x4679b65f;
  597. std::string phone_prefix_rules;
  598. uint32_t dc_id;
  599. std::vector<std::unique_ptr<IpPort>> ips;
  600. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  601. };
  602. class TL_help_configSimple : public TLObject {
  603. public:
  604. static const uint32_t constructor = 0x5a592a6c;
  605. int32_t date;
  606. int32_t expires;
  607. std::vector<std::unique_ptr<TL_accessPointRule>> rules;
  608. static TL_help_configSimple *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error);
  609. void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error);
  610. };
  611. #endif