<?php
/**
 * This file is automatic generated by build_docs.php file
 * and is used only for autocomplete in multiple IDE
 * don't modify manually.
 */

namespace danog\MadelineProto;

interface auth
{
    /**
     * @param array params [
     *               string phone_number,
     *               int api_id,
     *               string api_hash,
     *               CodeSettings settings,
     *              ]
     *
     * @return auth_SentCode
     */
    public function sendCode(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               string phone_code_hash,
     *               string first_name,
     *               string last_name,
     *              ]
     *
     * @return auth_Authorization
     */
    public function signUp(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               string phone_code_hash,
     *               string phone_code,
     *              ]
     *
     * @return auth_Authorization
     */
    public function signIn(array $params);

    /**
     * @return bool
     */
    public function logOut();

    /**
     * @return bool
     */
    public function resetAuthorizations();

    /**
     * @param array params [
     *               int dc_id,
     *              ]
     *
     * @return auth_ExportedAuthorization
     */
    public function exportAuthorization(array $params);

    /**
     * @param array params [
     *               int id,
     *               bytes bytes,
     *              ]
     *
     * @return auth_Authorization
     */
    public function importAuthorization(array $params);

    /**
     * @param array params [
     *               long perm_auth_key_id,
     *               long nonce,
     *               int expires_at,
     *               bytes encrypted_message,
     *              ]
     *
     * @return bool
     */
    public function bindTempAuthKey(array $params);

    /**
     * @param array params [
     *               int api_id,
     *               string api_hash,
     *               string bot_auth_token,
     *              ]
     *
     * @return auth_Authorization
     */
    public function importBotAuthorization(array $params);

    /**
     * @param array params [
     *               InputCheckPasswordSRP password,
     *              ]
     *
     * @return auth_Authorization
     */
    public function checkPassword(array $params);

    /**
     * @return auth_PasswordRecovery
     */
    public function requestPasswordRecovery();

    /**
     * @param array params [
     *               string code,
     *              ]
     *
     * @return auth_Authorization
     */
    public function recoverPassword(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               string phone_code_hash,
     *              ]
     *
     * @return auth_SentCode
     */
    public function resendCode(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               string phone_code_hash,
     *              ]
     *
     * @return bool
     */
    public function cancelCode(array $params);

    /**
     * @param array params [
     *               long except_auth_keys,
     *              ]
     *
     * @return bool
     */
    public function dropTempAuthKeys(array $params);
}

interface account
{
    /**
     * @param array params [
     *               boolean no_muted,
     *               int token_type,
     *               string token,
     *               Bool app_sandbox,
     *               bytes secret,
     *               int other_uids,
     *              ]
     *
     * @return bool
     */
    public function registerDevice(array $params);

    /**
     * @param array params [
     *               int token_type,
     *               string token,
     *               int other_uids,
     *              ]
     *
     * @return bool
     */
    public function unregisterDevice(array $params);

    /**
     * @param array params [
     *               InputNotifyPeer peer,
     *               InputPeerNotifySettings settings,
     *              ]
     *
     * @return bool
     */
    public function updateNotifySettings(array $params);

    /**
     * @param array params [
     *               InputNotifyPeer peer,
     *              ]
     *
     * @return PeerNotifySettings
     */
    public function getNotifySettings(array $params);

    /**
     * @return bool
     */
    public function resetNotifySettings();

    /**
     * @param array params [
     *               string first_name,
     *               string last_name,
     *               string about,
     *              ]
     *
     * @return User
     */
    public function updateProfile(array $params);

    /**
     * @param array params [
     *               Bool offline,
     *              ]
     *
     * @return bool
     */
    public function updateStatus(array $params);

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return account_WallPapers
     */
    public function getWallPapers(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               ReportReason reason,
     *              ]
     *
     * @return bool
     */
    public function reportPeer(array $params);

    /**
     * @param array params [
     *               string username,
     *              ]
     *
     * @return bool
     */
    public function checkUsername(array $params);

    /**
     * @param array params [
     *               string username,
     *              ]
     *
     * @return User
     */
    public function updateUsername(array $params);

    /**
     * @param array params [
     *               InputPrivacyKey key,
     *              ]
     *
     * @return account_PrivacyRules
     */
    public function getPrivacy(array $params);

    /**
     * @param array params [
     *               InputPrivacyKey key,
     *               InputPrivacyRule rules,
     *              ]
     *
     * @return account_PrivacyRules
     */
    public function setPrivacy(array $params);

    /**
     * @param array params [
     *               string reason,
     *              ]
     *
     * @return bool
     */
    public function deleteAccount(array $params);

    /**
     * @return AccountDaysTTL
     */
    public function getAccountTTL();

    /**
     * @param array params [
     *               AccountDaysTTL ttl,
     *              ]
     *
     * @return bool
     */
    public function setAccountTTL(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               CodeSettings settings,
     *              ]
     *
     * @return auth_SentCode
     */
    public function sendChangePhoneCode(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               string phone_code_hash,
     *               string phone_code,
     *              ]
     *
     * @return User
     */
    public function changePhone(array $params);

    /**
     * @param array params [
     *               int period,
     *              ]
     *
     * @return bool
     */
    public function updateDeviceLocked(array $params);

    /**
     * @return account_Authorizations
     */
    public function getAuthorizations();

    /**
     * @param array params [
     *               long hash,
     *              ]
     *
     * @return bool
     */
    public function resetAuthorization(array $params);

    /**
     * @return account_Password
     */
    public function getPassword();

    /**
     * @param array params [
     *               InputCheckPasswordSRP password,
     *              ]
     *
     * @return account_PasswordSettings
     */
    public function getPasswordSettings(array $params);

    /**
     * @param array params [
     *               InputCheckPasswordSRP password,
     *               account_PasswordInputSettings new_settings,
     *              ]
     *
     * @return bool
     */
    public function updatePasswordSettings(array $params);

    /**
     * @param array params [
     *               string hash,
     *               CodeSettings settings,
     *              ]
     *
     * @return auth_SentCode
     */
    public function sendConfirmPhoneCode(array $params);

    /**
     * @param array params [
     *               string phone_code_hash,
     *               string phone_code,
     *              ]
     *
     * @return bool
     */
    public function confirmPhone(array $params);

    /**
     * @param array params [
     *               InputCheckPasswordSRP password,
     *               int period,
     *              ]
     *
     * @return account_TmpPassword
     */
    public function getTmpPassword(array $params);

    /**
     * @return account_WebAuthorizations
     */
    public function getWebAuthorizations();

    /**
     * @param array params [
     *               long hash,
     *              ]
     *
     * @return bool
     */
    public function resetWebAuthorization(array $params);

    /**
     * @return bool
     */
    public function resetWebAuthorizations();

    /**
     * @return Vector_of_SecureValue
     */
    public function getAllSecureValues();

    /**
     * @param array params [
     *               SecureValueType types,
     *              ]
     *
     * @return Vector_of_SecureValue
     */
    public function getSecureValue(array $params);

    /**
     * @param array params [
     *               InputSecureValue value,
     *               long secure_secret_id,
     *              ]
     *
     * @return SecureValue
     */
    public function saveSecureValue(array $params);

    /**
     * @param array params [
     *               SecureValueType types,
     *              ]
     *
     * @return bool
     */
    public function deleteSecureValue(array $params);

    /**
     * @param array params [
     *               int bot_id,
     *               string scope,
     *               string public_key,
     *              ]
     *
     * @return account_AuthorizationForm
     */
    public function getAuthorizationForm(array $params);

    /**
     * @param array params [
     *               int bot_id,
     *               string scope,
     *               string public_key,
     *               SecureValueHash value_hashes,
     *               SecureCredentialsEncrypted credentials,
     *              ]
     *
     * @return bool
     */
    public function acceptAuthorization(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               CodeSettings settings,
     *              ]
     *
     * @return auth_SentCode
     */
    public function sendVerifyPhoneCode(array $params);

    /**
     * @param array params [
     *               string phone_number,
     *               string phone_code_hash,
     *               string phone_code,
     *              ]
     *
     * @return bool
     */
    public function verifyPhone(array $params);

    /**
     * @param array params [
     *               string email,
     *              ]
     *
     * @return account_SentEmailCode
     */
    public function sendVerifyEmailCode(array $params);

    /**
     * @param array params [
     *               string email,
     *               string code,
     *              ]
     *
     * @return bool
     */
    public function verifyEmail(array $params);

    /**
     * @param array params [
     *               boolean contacts,
     *               boolean message_users,
     *               boolean message_chats,
     *               boolean message_megagroups,
     *               boolean message_channels,
     *               boolean files,
     *               int file_max_size,
     *              ]
     *
     * @return account_Takeout
     */
    public function initTakeoutSession(array $params);

    /**
     * @param array params [
     *               boolean success,
     *              ]
     *
     * @return bool
     */
    public function finishTakeoutSession(array $params);

    /**
     * @param array params [
     *               string code,
     *              ]
     *
     * @return bool
     */
    public function confirmPasswordEmail(array $params);

    /**
     * @return bool
     */
    public function resendPasswordEmail();

    /**
     * @return bool
     */
    public function cancelPasswordEmail();

    /**
     * @return bool
     */
    public function getContactSignUpNotification();

    /**
     * @param array params [
     *               Bool silent,
     *              ]
     *
     * @return bool
     */
    public function setContactSignUpNotification(array $params);

    /**
     * @param array params [
     *               boolean compare_sound,
     *               InputNotifyPeer peer,
     *              ]
     *
     * @return Updates
     */
    public function getNotifyExceptions(array $params);

    /**
     * @param array params [
     *               InputWallPaper wallpaper,
     *              ]
     *
     * @return WallPaper
     */
    public function getWallPaper(array $params);

    /**
     * @param array params [
     *               InputFile file,
     *               string mime_type,
     *               WallPaperSettings settings,
     *              ]
     *
     * @return WallPaper
     */
    public function uploadWallPaper(array $params);

    /**
     * @param array params [
     *               InputWallPaper wallpaper,
     *               Bool unsave,
     *               WallPaperSettings settings,
     *              ]
     *
     * @return bool
     */
    public function saveWallPaper(array $params);

    /**
     * @param array params [
     *               InputWallPaper wallpaper,
     *               WallPaperSettings settings,
     *              ]
     *
     * @return bool
     */
    public function installWallPaper(array $params);

    /**
     * @return bool
     */
    public function resetWallPapers();

    /**
     * @return account_AutoDownloadSettings
     */
    public function getAutoDownloadSettings();

    /**
     * @param array params [
     *               boolean low,
     *               boolean high,
     *               AutoDownloadSettings settings,
     *              ]
     *
     * @return bool
     */
    public function saveAutoDownloadSettings(array $params);

    /**
     * @param array params [
     *               InputFile file,
     *               InputFile thumb,
     *               string file_name,
     *               string mime_type,
     *              ]
     *
     * @return Document
     */
    public function uploadTheme(array $params);

    /**
     * @param array params [
     *               string slug,
     *               string title,
     *               InputDocument document,
     *              ]
     *
     * @return Theme
     */
    public function createTheme(array $params);

    /**
     * @param array params [
     *               string format,
     *               InputTheme theme,
     *               string slug,
     *               string title,
     *               InputDocument document,
     *              ]
     *
     * @return Theme
     */
    public function updateTheme(array $params);

    /**
     * @param array params [
     *               InputTheme theme,
     *               Bool unsave,
     *              ]
     *
     * @return bool
     */
    public function saveTheme(array $params);

    /**
     * @param array params [
     *               boolean dark,
     *               string format,
     *               InputTheme theme,
     *              ]
     *
     * @return bool
     */
    public function installTheme(array $params);

    /**
     * @param array params [
     *               string format,
     *               InputTheme theme,
     *               long document_id,
     *              ]
     *
     * @return Theme
     */
    public function getTheme(array $params);

    /**
     * @param array params [
     *               string format,
     *               int hash,
     *              ]
     *
     * @return account_Themes
     */
    public function getThemes(array $params);
}

interface users
{
    /**
     * @param array params [
     *               InputUser id,
     *              ]
     *
     * @return Vector_of_User
     */
    public function getUsers(array $params);

    /**
     * @param array params [
     *               InputUser id,
     *              ]
     *
     * @return UserFull
     */
    public function getFullUser(array $params);

    /**
     * @param array params [
     *               InputUser id,
     *               SecureValueError errors,
     *              ]
     *
     * @return bool
     */
    public function setSecureValueErrors(array $params);
}

interface contacts
{
    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return Vector_of_int
     */
    public function getContactIDs(array $params);

    /**
     * @return Vector_of_ContactStatus
     */
    public function getStatuses();

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return contacts_Contacts
     */
    public function getContacts(array $params);

    /**
     * @param array params [
     *               InputContact contacts,
     *              ]
     *
     * @return contacts_ImportedContacts
     */
    public function importContacts(array $params);

    /**
     * @param array params [
     *               InputUser id,
     *              ]
     *
     * @return Updates
     */
    public function deleteContacts(array $params);

    /**
     * @param array params [
     *               string phones,
     *              ]
     *
     * @return bool
     */
    public function deleteByPhones(array $params);

    /**
     * @param array params [
     *               InputUser id,
     *              ]
     *
     * @return bool
     */
    public function block(array $params);

    /**
     * @param array params [
     *               InputUser id,
     *              ]
     *
     * @return bool
     */
    public function unblock(array $params);

    /**
     * @param array params [
     *               int offset,
     *               int limit,
     *              ]
     *
     * @return contacts_Blocked
     */
    public function getBlocked(array $params);

    /**
     * @param array params [
     *               string q,
     *               int limit,
     *              ]
     *
     * @return contacts_Found
     */
    public function search(array $params);

    /**
     * @param array params [
     *               string username,
     *              ]
     *
     * @return contacts_ResolvedPeer
     */
    public function resolveUsername(array $params);

    /**
     * @param array params [
     *               boolean correspondents,
     *               boolean bots_pm,
     *               boolean bots_inline,
     *               boolean phone_calls,
     *               boolean forward_users,
     *               boolean forward_chats,
     *               boolean groups,
     *               boolean channels,
     *               int offset,
     *               int limit,
     *               int hash,
     *              ]
     *
     * @return contacts_TopPeers
     */
    public function getTopPeers(array $params);

    /**
     * @param array params [
     *               TopPeerCategory category,
     *               InputPeer peer,
     *              ]
     *
     * @return bool
     */
    public function resetTopPeerRating(array $params);

    /**
     * @return bool
     */
    public function resetSaved();

    /**
     * @return Vector_of_SavedContact
     */
    public function getSaved();

    /**
     * @param array params [
     *               Bool enabled,
     *              ]
     *
     * @return bool
     */
    public function toggleTopPeers(array $params);

    /**
     * @param array params [
     *               boolean add_phone_privacy_exception,
     *               InputUser id,
     *               string first_name,
     *               string last_name,
     *               string phone,
     *              ]
     *
     * @return Updates
     */
    public function addContact(array $params);

    /**
     * @param array params [
     *               InputUser id,
     *              ]
     *
     * @return Updates
     */
    public function acceptContact(array $params);

    /**
     * @param array params [
     *               InputGeoPoint geo_point,
     *              ]
     *
     * @return Updates
     */
    public function getLocated(array $params);
}

interface messages
{
    /**
     * @param array params [
     *               InputMessage id,
     *              ]
     *
     * @return messages_Messages
     */
    public function getMessages(array $params);

    /**
     * @param array params [
     *               boolean exclude_pinned,
     *               int folder_id,
     *               int offset_date,
     *               int offset_id,
     *               InputPeer offset_peer,
     *               int limit,
     *               int hash,
     *              ]
     *
     * @return messages_Dialogs
     */
    public function getDialogs(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int offset_id,
     *               int offset_date,
     *               int add_offset,
     *               int limit,
     *               int max_id,
     *               int min_id,
     *               int hash,
     *              ]
     *
     * @return messages_Messages
     */
    public function getHistory(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               string q,
     *               InputUser from_id,
     *               MessagesFilter filter,
     *               int min_date,
     *               int max_date,
     *               int offset_id,
     *               int add_offset,
     *               int limit,
     *               int max_id,
     *               int min_id,
     *               int hash,
     *              ]
     *
     * @return messages_Messages
     */
    public function search(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int max_id,
     *              ]
     *
     * @return messages_AffectedMessages
     */
    public function readHistory(array $params);

    /**
     * @param array params [
     *               boolean just_clear,
     *               boolean revoke,
     *               InputPeer peer,
     *               int max_id,
     *              ]
     *
     * @return messages_AffectedHistory
     */
    public function deleteHistory(array $params);

    /**
     * @param array params [
     *               boolean revoke,
     *               int id,
     *              ]
     *
     * @return messages_AffectedMessages
     */
    public function deleteMessages(array $params);

    /**
     * @param array params [
     *               int max_id,
     *              ]
     *
     * @return Vector_of_ReceivedNotifyMessage
     */
    public function receivedMessages(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               SendMessageAction action,
     *              ]
     *
     * @return bool
     */
    public function setTyping(array $params);

    /**
     * @param array params [
     *               boolean no_webpage,
     *               boolean silent,
     *               boolean background,
     *               boolean clear_draft,
     *               InputPeer peer,
     *               int reply_to_msg_id,
     *               string message,
     *               ReplyMarkup reply_markup,
     *               MessageEntity entities,
     *               int schedule_date,
     *              ]
     *
     * @return Updates
     */
    public function sendMessage(array $params);

    /**
     * @param array params [
     *               boolean silent,
     *               boolean background,
     *               boolean clear_draft,
     *               InputPeer peer,
     *               int reply_to_msg_id,
     *               InputMedia media,
     *               string message,
     *               ReplyMarkup reply_markup,
     *               MessageEntity entities,
     *               int schedule_date,
     *              ]
     *
     * @return Updates
     */
    public function sendMedia(array $params);

    /**
     * @param array params [
     *               boolean silent,
     *               boolean background,
     *               boolean with_my_score,
     *               boolean grouped,
     *               InputPeer from_peer,
     *               int id,
     *               InputPeer to_peer,
     *               int schedule_date,
     *              ]
     *
     * @return Updates
     */
    public function forwardMessages(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *              ]
     *
     * @return bool
     */
    public function reportSpam(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *              ]
     *
     * @return PeerSettings
     */
    public function getPeerSettings(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *               ReportReason reason,
     *              ]
     *
     * @return bool
     */
    public function report(array $params);

    /**
     * @param array params [
     *               int id,
     *              ]
     *
     * @return messages_Chats
     */
    public function getChats(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *              ]
     *
     * @return messages_ChatFull
     */
    public function getFullChat(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *               string title,
     *              ]
     *
     * @return Updates
     */
    public function editChatTitle(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *               InputChatPhoto photo,
     *              ]
     *
     * @return Updates
     */
    public function editChatPhoto(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *               InputUser user_id,
     *               int fwd_limit,
     *              ]
     *
     * @return Updates
     */
    public function addChatUser(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *               InputUser user_id,
     *              ]
     *
     * @return Updates
     */
    public function deleteChatUser(array $params);

    /**
     * @param array params [
     *               InputUser users,
     *               string title,
     *              ]
     *
     * @return Updates
     */
    public function createChat(array $params);

    /**
     * @param array params [
     *               int version,
     *               int random_length,
     *              ]
     *
     * @return messages_DhConfig
     */
    public function getDhConfig(array $params);

    /**
     * @param array params [
     *               InputUser user_id,
     *               bytes g_a,
     *              ]
     *
     * @return EncryptedChat
     */
    public function requestEncryption(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               bytes g_b,
     *               long key_fingerprint,
     *              ]
     *
     * @return EncryptedChat
     */
    public function acceptEncryption(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *              ]
     *
     * @return bool
     */
    public function discardEncryption(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               Bool typing,
     *              ]
     *
     * @return bool
     */
    public function setEncryptedTyping(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               int max_date,
     *              ]
     *
     * @return bool
     */
    public function readEncryptedHistory(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               bytes data,
     *              ]
     *
     * @return messages_SentEncryptedMessage
     */
    public function sendEncrypted(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               bytes data,
     *               InputEncryptedFile file,
     *              ]
     *
     * @return messages_SentEncryptedMessage
     */
    public function sendEncryptedFile(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               bytes data,
     *              ]
     *
     * @return messages_SentEncryptedMessage
     */
    public function sendEncryptedService(array $params);

    /**
     * @param array params [
     *               int max_qts,
     *              ]
     *
     * @return Vector_of_long
     */
    public function receivedQueue(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *              ]
     *
     * @return bool
     */
    public function reportEncryptedSpam(array $params);

    /**
     * @param array params [
     *               int id,
     *              ]
     *
     * @return messages_AffectedMessages
     */
    public function readMessageContents(array $params);

    /**
     * @param array params [
     *               string emoticon,
     *               int hash,
     *              ]
     *
     * @return messages_Stickers
     */
    public function getStickers(array $params);

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return messages_AllStickers
     */
    public function getAllStickers(array $params);

    /**
     * @param array params [
     *               string message,
     *               MessageEntity entities,
     *              ]
     *
     * @return MessageMedia
     */
    public function getWebPagePreview(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *              ]
     *
     * @return ExportedChatInvite
     */
    public function exportChatInvite(array $params);

    /**
     * @param array params [
     *               string hash,
     *              ]
     *
     * @return ChatInvite
     */
    public function checkChatInvite(array $params);

    /**
     * @param array params [
     *               string hash,
     *              ]
     *
     * @return Updates
     */
    public function importChatInvite(array $params);

    /**
     * @param array params [
     *               InputStickerSet stickerset,
     *              ]
     *
     * @return messages_StickerSet
     */
    public function getStickerSet(array $params);

    /**
     * @param array params [
     *               InputStickerSet stickerset,
     *               Bool archived,
     *              ]
     *
     * @return messages_StickerSetInstallResult
     */
    public function installStickerSet(array $params);

    /**
     * @param array params [
     *               InputStickerSet stickerset,
     *              ]
     *
     * @return bool
     */
    public function uninstallStickerSet(array $params);

    /**
     * @param array params [
     *               InputUser bot,
     *               InputPeer peer,
     *               string start_param,
     *              ]
     *
     * @return Updates
     */
    public function startBot(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *               Bool increment,
     *              ]
     *
     * @return Vector_of_int
     */
    public function getMessagesViews(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *               InputUser user_id,
     *               Bool is_admin,
     *              ]
     *
     * @return bool
     */
    public function editChatAdmin(array $params);

    /**
     * @param array params [
     *               int chat_id,
     *              ]
     *
     * @return Updates
     */
    public function migrateChat(array $params);

    /**
     * @param array params [
     *               int folder_id,
     *               string q,
     *               int offset_rate,
     *               InputPeer offset_peer,
     *               int offset_id,
     *               int limit,
     *              ]
     *
     * @return messages_Messages
     */
    public function searchGlobal(array $params);

    /**
     * @param array params [
     *               boolean masks,
     *               long order,
     *              ]
     *
     * @return bool
     */
    public function reorderStickerSets(array $params);

    /**
     * @param array params [
     *               bytes sha256,
     *               int size,
     *               string mime_type,
     *              ]
     *
     * @return Document
     */
    public function getDocumentByHash(array $params);

    /**
     * @param array params [
     *               string q,
     *               int offset,
     *              ]
     *
     * @return messages_FoundGifs
     */
    public function searchGifs(array $params);

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return messages_SavedGifs
     */
    public function getSavedGifs(array $params);

    /**
     * @param array params [
     *               InputDocument id,
     *               Bool unsave,
     *              ]
     *
     * @return bool
     */
    public function saveGif(array $params);

    /**
     * @param array params [
     *               InputUser bot,
     *               InputPeer peer,
     *               InputGeoPoint geo_point,
     *               string query,
     *               string offset,
     *              ]
     *
     * @return messages_BotResults
     */
    public function getInlineBotResults(array $params);

    /**
     * @param array params [
     *               boolean gallery,
     *               boolean private,
     *               long query_id,
     *               InputBotInlineResult results,
     *               int cache_time,
     *               string next_offset,
     *               InlineBotSwitchPM switch_pm,
     *              ]
     *
     * @return bool
     */
    public function setInlineBotResults(array $params);

    /**
     * @param array params [
     *               boolean silent,
     *               boolean background,
     *               boolean clear_draft,
     *               boolean hide_via,
     *               InputPeer peer,
     *               int reply_to_msg_id,
     *               long query_id,
     *               string id,
     *               int schedule_date,
     *              ]
     *
     * @return Updates
     */
    public function sendInlineBotResult(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *              ]
     *
     * @return messages_MessageEditData
     */
    public function getMessageEditData(array $params);

    /**
     * @param array params [
     *               boolean no_webpage,
     *               InputPeer peer,
     *               int id,
     *               string message,
     *               InputMedia media,
     *               ReplyMarkup reply_markup,
     *               MessageEntity entities,
     *               int schedule_date,
     *              ]
     *
     * @return Updates
     */
    public function editMessage(array $params);

    /**
     * @param array params [
     *               boolean no_webpage,
     *               InputBotInlineMessageID id,
     *               string message,
     *               InputMedia media,
     *               ReplyMarkup reply_markup,
     *               MessageEntity entities,
     *              ]
     *
     * @return bool
     */
    public function editInlineBotMessage(array $params);

    /**
     * @param array params [
     *               boolean game,
     *               InputPeer peer,
     *               int msg_id,
     *               bytes data,
     *              ]
     *
     * @return messages_BotCallbackAnswer
     */
    public function getBotCallbackAnswer(array $params);

    /**
     * @param array params [
     *               boolean alert,
     *               long query_id,
     *               string message,
     *               string url,
     *               int cache_time,
     *              ]
     *
     * @return bool
     */
    public function setBotCallbackAnswer(array $params);

    /**
     * @param array params [
     *               InputDialogPeer peers,
     *              ]
     *
     * @return messages_PeerDialogs
     */
    public function getPeerDialogs(array $params);

    /**
     * @param array params [
     *               boolean no_webpage,
     *               int reply_to_msg_id,
     *               InputPeer peer,
     *               string message,
     *               MessageEntity entities,
     *              ]
     *
     * @return bool
     */
    public function saveDraft(array $params);

    /**
     * @return Updates
     */
    public function getAllDrafts();

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return messages_FeaturedStickers
     */
    public function getFeaturedStickers(array $params);

    /**
     * @param array params [
     *               long id,
     *              ]
     *
     * @return bool
     */
    public function readFeaturedStickers(array $params);

    /**
     * @param array params [
     *               boolean attached,
     *               int hash,
     *              ]
     *
     * @return messages_RecentStickers
     */
    public function getRecentStickers(array $params);

    /**
     * @param array params [
     *               boolean attached,
     *               InputDocument id,
     *               Bool unsave,
     *              ]
     *
     * @return bool
     */
    public function saveRecentSticker(array $params);

    /**
     * @param array params [
     *               boolean attached,
     *              ]
     *
     * @return bool
     */
    public function clearRecentStickers(array $params);

    /**
     * @param array params [
     *               boolean masks,
     *               long offset_id,
     *               int limit,
     *              ]
     *
     * @return messages_ArchivedStickers
     */
    public function getArchivedStickers(array $params);

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return messages_AllStickers
     */
    public function getMaskStickers(array $params);

    /**
     * @param array params [
     *               InputStickeredMedia media,
     *              ]
     *
     * @return Vector_of_StickerSetCovered
     */
    public function getAttachedStickers(array $params);

    /**
     * @param array params [
     *               boolean edit_message,
     *               boolean force,
     *               InputPeer peer,
     *               int id,
     *               InputUser user_id,
     *               int score,
     *              ]
     *
     * @return Updates
     */
    public function setGameScore(array $params);

    /**
     * @param array params [
     *               boolean edit_message,
     *               boolean force,
     *               InputBotInlineMessageID id,
     *               InputUser user_id,
     *               int score,
     *              ]
     *
     * @return bool
     */
    public function setInlineGameScore(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *               InputUser user_id,
     *              ]
     *
     * @return messages_HighScores
     */
    public function getGameHighScores(array $params);

    /**
     * @param array params [
     *               InputBotInlineMessageID id,
     *               InputUser user_id,
     *              ]
     *
     * @return messages_HighScores
     */
    public function getInlineGameHighScores(array $params);

    /**
     * @param array params [
     *               InputUser user_id,
     *               int max_id,
     *               int limit,
     *              ]
     *
     * @return messages_Chats
     */
    public function getCommonChats(array $params);

    /**
     * @param array params [
     *               int except_ids,
     *              ]
     *
     * @return messages_Chats
     */
    public function getAllChats(array $params);

    /**
     * @param array params [
     *               string url,
     *               int hash,
     *              ]
     *
     * @return WebPage
     */
    public function getWebPage(array $params);

    /**
     * @param array params [
     *               boolean pinned,
     *               InputDialogPeer peer,
     *              ]
     *
     * @return bool
     */
    public function toggleDialogPin(array $params);

    /**
     * @param array params [
     *               boolean force,
     *               int folder_id,
     *               InputDialogPeer order,
     *              ]
     *
     * @return bool
     */
    public function reorderPinnedDialogs(array $params);

    /**
     * @param array params [
     *               int folder_id,
     *              ]
     *
     * @return messages_PeerDialogs
     */
    public function getPinnedDialogs(array $params);

    /**
     * @param array params [
     *               long query_id,
     *               string error,
     *               ShippingOption shipping_options,
     *              ]
     *
     * @return bool
     */
    public function setBotShippingResults(array $params);

    /**
     * @param array params [
     *               boolean success,
     *               long query_id,
     *               string error,
     *              ]
     *
     * @return bool
     */
    public function setBotPrecheckoutResults(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               InputMedia media,
     *              ]
     *
     * @return MessageMedia
     */
    public function uploadMedia(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int reply_to_msg_id,
     *              ]
     *
     * @return Updates
     */
    public function sendScreenshotNotification(array $params);

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return messages_FavedStickers
     */
    public function getFavedStickers(array $params);

    /**
     * @param array params [
     *               InputDocument id,
     *               Bool unfave,
     *              ]
     *
     * @return bool
     */
    public function faveSticker(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int offset_id,
     *               int add_offset,
     *               int limit,
     *               int max_id,
     *               int min_id,
     *              ]
     *
     * @return messages_Messages
     */
    public function getUnreadMentions(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *              ]
     *
     * @return messages_AffectedHistory
     */
    public function readMentions(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int limit,
     *               int hash,
     *              ]
     *
     * @return messages_Messages
     */
    public function getRecentLocations(array $params);

    /**
     * @param array params [
     *               boolean silent,
     *               boolean background,
     *               boolean clear_draft,
     *               InputPeer peer,
     *               int reply_to_msg_id,
     *               InputSingleMedia multi_media,
     *               int schedule_date,
     *              ]
     *
     * @return Updates
     */
    public function sendMultiMedia(array $params);

    /**
     * @param array params [
     *               InputEncryptedChat peer,
     *               InputEncryptedFile file,
     *              ]
     *
     * @return EncryptedFile
     */
    public function uploadEncryptedFile(array $params);

    /**
     * @param array params [
     *               boolean exclude_featured,
     *               string q,
     *               int hash,
     *              ]
     *
     * @return messages_FoundStickerSets
     */
    public function searchStickerSets(array $params);

    /**
     * @return Vector_of_MessageRange
     */
    public function getSplitRanges();

    /**
     * @param array params [
     *               boolean unread,
     *               InputDialogPeer peer,
     *              ]
     *
     * @return bool
     */
    public function markDialogUnread(array $params);

    /**
     * @return Vector_of_DialogPeer
     */
    public function getDialogUnreadMarks();

    /**
     * @return bool
     */
    public function clearAllDrafts();

    /**
     * @param array params [
     *               boolean silent,
     *               InputPeer peer,
     *               int id,
     *              ]
     *
     * @return Updates
     */
    public function updatePinnedMessage(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int msg_id,
     *               bytes options,
     *              ]
     *
     * @return Updates
     */
    public function sendVote(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int msg_id,
     *              ]
     *
     * @return Updates
     */
    public function getPollResults(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *              ]
     *
     * @return ChatOnlines
     */
    public function getOnlines(array $params);

    /**
     * @param array params [
     *               boolean dark,
     *               InputPeer peer,
     *               string params,
     *              ]
     *
     * @return StatsURL
     */
    public function getStatsURL(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               string about,
     *              ]
     *
     * @return bool
     */
    public function editChatAbout(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               ChatBannedRights banned_rights,
     *              ]
     *
     * @return Updates
     */
    public function editChatDefaultBannedRights(array $params);

    /**
     * @param array params [
     *               string lang_code,
     *              ]
     *
     * @return EmojiKeywordsDifference
     */
    public function getEmojiKeywords(array $params);

    /**
     * @param array params [
     *               string lang_code,
     *               int from_version,
     *              ]
     *
     * @return EmojiKeywordsDifference
     */
    public function getEmojiKeywordsDifference(array $params);

    /**
     * @param array params [
     *               string lang_codes,
     *              ]
     *
     * @return Vector_of_EmojiLanguage
     */
    public function getEmojiKeywordsLanguages(array $params);

    /**
     * @param array params [
     *               string lang_code,
     *              ]
     *
     * @return EmojiURL
     */
    public function getEmojiURL(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               MessagesFilter filters,
     *              ]
     *
     * @return Vector_of_messages_SearchCounter
     */
    public function getSearchCounters(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int msg_id,
     *               int button_id,
     *              ]
     *
     * @return UrlAuthResult
     */
    public function requestUrlAuth(array $params);

    /**
     * @param array params [
     *               boolean write_allowed,
     *               InputPeer peer,
     *               int msg_id,
     *               int button_id,
     *              ]
     *
     * @return UrlAuthResult
     */
    public function acceptUrlAuth(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *              ]
     *
     * @return bool
     */
    public function hidePeerSettingsBar(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int hash,
     *              ]
     *
     * @return messages_Messages
     */
    public function getScheduledHistory(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *              ]
     *
     * @return messages_Messages
     */
    public function getScheduledMessages(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *              ]
     *
     * @return Updates
     */
    public function sendScheduledMessages(array $params);

    /**
     * @param array params [
     *               InputPeer peer,
     *               int id,
     *              ]
     *
     * @return Updates
     */
    public function deleteScheduledMessages(array $params);
}

interface updates
{
    /**
     * @return updates_State
     */
    public function getState();

    /**
     * @param array params [
     *               int pts,
     *               int pts_total_limit,
     *               int date,
     *               int qts,
     *              ]
     *
     * @return updates_Difference
     */
    public function getDifference(array $params);

    /**
     * @param array params [
     *               boolean force,
     *               InputChannel channel,
     *               ChannelMessagesFilter filter,
     *               int pts,
     *               int limit,
     *              ]
     *
     * @return updates_ChannelDifference
     */
    public function getChannelDifference(array $params);
}

interface photos
{
    /**
     * @param array params [
     *               InputPhoto id,
     *              ]
     *
     * @return UserProfilePhoto
     */
    public function updateProfilePhoto(array $params);

    /**
     * @param array params [
     *               InputFile file,
     *              ]
     *
     * @return photos_Photo
     */
    public function uploadProfilePhoto(array $params);

    /**
     * @param array params [
     *               InputPhoto id,
     *              ]
     *
     * @return Vector_of_long
     */
    public function deletePhotos(array $params);

    /**
     * @param array params [
     *               InputUser user_id,
     *               int offset,
     *               long max_id,
     *               int limit,
     *              ]
     *
     * @return photos_Photos
     */
    public function getUserPhotos(array $params);
}

interface upload
{
    /**
     * @param array params [
     *               long file_id,
     *               int file_part,
     *               bytes bytes,
     *              ]
     *
     * @return bool
     */
    public function saveFilePart(array $params);

    /**
     * @param array params [
     *               boolean precise,
     *               InputFileLocation location,
     *               int offset,
     *               int limit,
     *              ]
     *
     * @return upload_File
     */
    public function getFile(array $params);

    /**
     * @param array params [
     *               long file_id,
     *               int file_part,
     *               int file_total_parts,
     *               bytes bytes,
     *              ]
     *
     * @return bool
     */
    public function saveBigFilePart(array $params);

    /**
     * @param array params [
     *               InputWebFileLocation location,
     *               int offset,
     *               int limit,
     *              ]
     *
     * @return upload_WebFile
     */
    public function getWebFile(array $params);

    /**
     * @param array params [
     *               bytes file_token,
     *               int offset,
     *               int limit,
     *              ]
     *
     * @return upload_CdnFile
     */
    public function getCdnFile(array $params);

    /**
     * @param array params [
     *               bytes file_token,
     *               bytes request_token,
     *              ]
     *
     * @return Vector_of_FileHash
     */
    public function reuploadCdnFile(array $params);

    /**
     * @param array params [
     *               bytes file_token,
     *               int offset,
     *              ]
     *
     * @return Vector_of_FileHash
     */
    public function getCdnFileHashes(array $params);

    /**
     * @param array params [
     *               InputFileLocation location,
     *               int offset,
     *              ]
     *
     * @return Vector_of_FileHash
     */
    public function getFileHashes(array $params);
}

interface help
{
    /**
     * @return Config
     */
    public function getConfig();

    /**
     * @return NearestDc
     */
    public function getNearestDc();

    /**
     * @param array params [
     *               string source,
     *              ]
     *
     * @return help_AppUpdate
     */
    public function getAppUpdate(array $params);

    /**
     * @return help_InviteText
     */
    public function getInviteText();

    /**
     * @return help_Support
     */
    public function getSupport();

    /**
     * @param array params [
     *               string prev_app_version,
     *              ]
     *
     * @return Updates
     */
    public function getAppChangelog(array $params);

    /**
     * @param array params [
     *               int pending_updates_count,
     *               string message,
     *              ]
     *
     * @return bool
     */
    public function setBotUpdatesStatus(array $params);

    /**
     * @return CdnConfig
     */
    public function getCdnConfig();

    /**
     * @param array params [
     *               string referer,
     *              ]
     *
     * @return help_RecentMeUrls
     */
    public function getRecentMeUrls(array $params);

    /**
     * @return help_ProxyData
     */
    public function getProxyData();

    /**
     * @return help_TermsOfServiceUpdate
     */
    public function getTermsOfServiceUpdate();

    /**
     * @param array params [
     *               DataJSON id,
     *              ]
     *
     * @return bool
     */
    public function acceptTermsOfService(array $params);

    /**
     * @param array params [
     *               string path,
     *              ]
     *
     * @return help_DeepLinkInfo
     */
    public function getDeepLinkInfo(array $params);

    /**
     * @return JSONValue
     */
    public function getAppConfig();

    /**
     * @param array params [
     *               InputAppEvent events,
     *              ]
     *
     * @return bool
     */
    public function saveAppLog(array $params);

    /**
     * @param array params [
     *               int hash,
     *              ]
     *
     * @return help_PassportConfig
     */
    public function getPassportConfig(array $params);

    /**
     * @return help_SupportName
     */
    public function getSupportName();

    /**
     * @param array params [
     *               InputUser user_id,
     *              ]
     *
     * @return help_UserInfo
     */
    public function getUserInfo(array $params);

    /**
     * @param array params [
     *               InputUser user_id,
     *               string message,
     *               MessageEntity entities,
     *              ]
     *
     * @return help_UserInfo
     */
    public function editUserInfo(array $params);
}

interface channels
{
    /**
     * @param array params [
     *               InputChannel channel,
     *               int max_id,
     *              ]
     *
     * @return bool
     */
    public function readHistory(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               int id,
     *              ]
     *
     * @return messages_AffectedMessages
     */
    public function deleteMessages(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser user_id,
     *              ]
     *
     * @return messages_AffectedHistory
     */
    public function deleteUserHistory(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser user_id,
     *               int id,
     *              ]
     *
     * @return bool
     */
    public function reportSpam(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputMessage id,
     *              ]
     *
     * @return messages_Messages
     */
    public function getMessages(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               ChannelParticipantsFilter filter,
     *               int offset,
     *               int limit,
     *               int hash,
     *              ]
     *
     * @return channels_ChannelParticipants
     */
    public function getParticipants(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser user_id,
     *              ]
     *
     * @return channels_ChannelParticipant
     */
    public function getParticipant(array $params);

    /**
     * @param array params [
     *               InputChannel id,
     *              ]
     *
     * @return messages_Chats
     */
    public function getChannels(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *              ]
     *
     * @return messages_ChatFull
     */
    public function getFullChannel(array $params);

    /**
     * @param array params [
     *               boolean broadcast,
     *               boolean megagroup,
     *               string title,
     *               string about,
     *               InputGeoPoint geo_point,
     *               string address,
     *              ]
     *
     * @return Updates
     */
    public function createChannel(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser user_id,
     *               ChatAdminRights admin_rights,
     *               string rank,
     *              ]
     *
     * @return Updates
     */
    public function editAdmin(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               string title,
     *              ]
     *
     * @return Updates
     */
    public function editTitle(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputChatPhoto photo,
     *              ]
     *
     * @return Updates
     */
    public function editPhoto(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               string username,
     *              ]
     *
     * @return bool
     */
    public function checkUsername(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               string username,
     *              ]
     *
     * @return bool
     */
    public function updateUsername(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *              ]
     *
     * @return Updates
     */
    public function joinChannel(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *              ]
     *
     * @return Updates
     */
    public function leaveChannel(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser users,
     *              ]
     *
     * @return Updates
     */
    public function inviteToChannel(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *              ]
     *
     * @return Updates
     */
    public function deleteChannel(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               int id,
     *               Bool grouped,
     *              ]
     *
     * @return ExportedMessageLink
     */
    public function exportMessageLink(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               Bool enabled,
     *              ]
     *
     * @return Updates
     */
    public function toggleSignatures(array $params);

    /**
     * @param array params [
     *               boolean by_location,
     *               boolean check_limit,
     *              ]
     *
     * @return messages_Chats
     */
    public function getAdminedPublicChannels(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser user_id,
     *               ChatBannedRights banned_rights,
     *              ]
     *
     * @return Updates
     */
    public function editBanned(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               string q,
     *               ChannelAdminLogEventsFilter events_filter,
     *               InputUser admins,
     *               long max_id,
     *               long min_id,
     *               int limit,
     *              ]
     *
     * @return channels_AdminLogResults
     */
    public function getAdminLog(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputStickerSet stickerset,
     *              ]
     *
     * @return bool
     */
    public function setStickers(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               int id,
     *              ]
     *
     * @return bool
     */
    public function readMessageContents(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               int max_id,
     *              ]
     *
     * @return bool
     */
    public function deleteHistory(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               Bool enabled,
     *              ]
     *
     * @return Updates
     */
    public function togglePreHistoryHidden(array $params);

    /**
     * @param array params [
     *               int offset,
     *              ]
     *
     * @return messages_Chats
     */
    public function getLeftChannels(array $params);

    /**
     * @return messages_Chats
     */
    public function getGroupsForDiscussion();

    /**
     * @param array params [
     *               InputChannel broadcast,
     *               InputChannel group,
     *              ]
     *
     * @return bool
     */
    public function setDiscussionGroup(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputUser user_id,
     *               InputCheckPasswordSRP password,
     *              ]
     *
     * @return Updates
     */
    public function editCreator(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               InputGeoPoint geo_point,
     *               string address,
     *              ]
     *
     * @return bool
     */
    public function editLocation(array $params);

    /**
     * @param array params [
     *               InputChannel channel,
     *               int seconds,
     *              ]
     *
     * @return Updates
     */
    public function toggleSlowMode(array $params);
}

interface bots
{
    /**
     * @param array params [
     *               string custom_method,
     *               DataJSON params,
     *              ]
     *
     * @return DataJSON
     */
    public function sendCustomRequest(array $params);

    /**
     * @param array params [
     *               long query_id,
     *               DataJSON data,
     *              ]
     *
     * @return bool
     */
    public function answerWebhookJSONQuery(array $params);
}

interface payments
{
    /**
     * @param array params [
     *               int msg_id,
     *              ]
     *
     * @return payments_PaymentForm
     */
    public function getPaymentForm(array $params);

    /**
     * @param array params [
     *               int msg_id,
     *              ]
     *
     * @return payments_PaymentReceipt
     */
    public function getPaymentReceipt(array $params);

    /**
     * @param array params [
     *               boolean save,
     *               int msg_id,
     *               PaymentRequestedInfo info,
     *              ]
     *
     * @return payments_ValidatedRequestedInfo
     */
    public function validateRequestedInfo(array $params);

    /**
     * @param array params [
     *               int msg_id,
     *               string requested_info_id,
     *               string shipping_option_id,
     *               InputPaymentCredentials credentials,
     *              ]
     *
     * @return payments_PaymentResult
     */
    public function sendPaymentForm(array $params);

    /**
     * @return payments_SavedInfo
     */
    public function getSavedInfo();

    /**
     * @param array params [
     *               boolean credentials,
     *               boolean info,
     *              ]
     *
     * @return bool
     */
    public function clearSavedInfo(array $params);
}

interface stickers
{
    /**
     * @param array params [
     *               boolean masks,
     *               InputUser user_id,
     *               string title,
     *               string short_name,
     *               InputStickerSetItem stickers,
     *              ]
     *
     * @return messages_StickerSet
     */
    public function createStickerSet(array $params);

    /**
     * @param array params [
     *               InputDocument sticker,
     *              ]
     *
     * @return messages_StickerSet
     */
    public function removeStickerFromSet(array $params);

    /**
     * @param array params [
     *               InputDocument sticker,
     *               int position,
     *              ]
     *
     * @return messages_StickerSet
     */
    public function changeStickerPosition(array $params);

    /**
     * @param array params [
     *               InputStickerSet stickerset,
     *               InputStickerSetItem sticker,
     *              ]
     *
     * @return messages_StickerSet
     */
    public function addStickerToSet(array $params);
}

interface phone
{
    /**
     * @return DataJSON
     */
    public function getCallConfig();

    /**
     * @param array params [
     *               boolean video,
     *               InputUser user_id,
     *               bytes g_a_hash,
     *               PhoneCallProtocol protocol,
     *              ]
     *
     * @return phone_PhoneCall
     */
    public function requestCall(array $params);

    /**
     * @param array params [
     *               InputPhoneCall peer,
     *               bytes g_b,
     *               PhoneCallProtocol protocol,
     *              ]
     *
     * @return phone_PhoneCall
     */
    public function acceptCall(array $params);

    /**
     * @param array params [
     *               InputPhoneCall peer,
     *               bytes g_a,
     *               long key_fingerprint,
     *               PhoneCallProtocol protocol,
     *              ]
     *
     * @return phone_PhoneCall
     */
    public function confirmCall(array $params);

    /**
     * @param array params [
     *               InputPhoneCall peer,
     *              ]
     *
     * @return bool
     */
    public function receivedCall(array $params);

    /**
     * @param array params [
     *               boolean video,
     *               InputPhoneCall peer,
     *               int duration,
     *               PhoneCallDiscardReason reason,
     *               long connection_id,
     *              ]
     *
     * @return Updates
     */
    public function discardCall(array $params);

    /**
     * @param array params [
     *               boolean user_initiative,
     *               InputPhoneCall peer,
     *               int rating,
     *               string comment,
     *              ]
     *
     * @return Updates
     */
    public function setCallRating(array $params);

    /**
     * @param array params [
     *               InputPhoneCall peer,
     *               DataJSON debug,
     *              ]
     *
     * @return bool
     */
    public function saveCallDebug(array $params);
}

interface langpack
{
    /**
     * @param array params [
     *               string lang_pack,
     *               string lang_code,
     *              ]
     *
     * @return LangPackDifference
     */
    public function getLangPack(array $params);

    /**
     * @param array params [
     *               string lang_pack,
     *               string lang_code,
     *               string keys,
     *              ]
     *
     * @return Vector_of_LangPackString
     */
    public function getStrings(array $params);

    /**
     * @param array params [
     *               string lang_pack,
     *               string lang_code,
     *               int from_version,
     *              ]
     *
     * @return LangPackDifference
     */
    public function getDifference(array $params);

    /**
     * @param array params [
     *               string lang_pack,
     *              ]
     *
     * @return Vector_of_LangPackLanguage
     */
    public function getLanguages(array $params);

    /**
     * @param array params [
     *               string lang_pack,
     *               string lang_code,
     *              ]
     *
     * @return LangPackLanguage
     */
    public function getLanguage(array $params);
}

interface folders
{
    /**
     * @param array params [
     *               InputFolderPeer folder_peers,
     *              ]
     *
     * @return Updates
     */
    public function editPeerFolders(array $params);

    /**
     * @param array params [
     *               int folder_id,
     *              ]
     *
     * @return Updates
     */
    public function deleteFolder(array $params);
}
