[Error] enum NativeError { "Initialization", "Database", "Network", }; enum MessageAck { "Received", "Seen", "Sent", }; enum Formatting { "Unknown", "Mention", "HashTag", "BotCommand", "Url", "Email", "Bold", "Italic", "Code", "Pre", // language:string "TextUrl", // url:string "MentionName", // user_id:long "Phone", "CashTag", "Underline", "Strike", "Blockquote", "BankCard", "Spoiler", "CustomEmoji", // document_id:long }; dictionary TextFormat { Formatting format; i32 offset; i32 length; string? extra; }; dictionary Message { i32 id; string sender; string text; timestamp date; timestamp? edit_date; sequence formatting; }; dictionary MessagePreview { string sender; string text; timestamp date; MessageAck ack; }; dictionary Dialog { string id; string title; MessagePreview? last_message; boolean pinned; }; interface LoginProcedure { constructor(); [Throws=NativeError] void request_login_code(string phone); [Throws=NativeError] void sign_in(string code); }; namespace talaria { [Throws=NativeError] void init_database(string path); [Throws=NativeError] void init_client(); [Throws=NativeError] boolean need_login(); [Throws=NativeError] sequence get_dialogs(); [Throws=NativeError] sequence get_messages(string packed); [Throws=NativeError] Message send_message(string packed, string text); };