// Path: src/com/cadiducho/minegram/api/inline/InlineKeyboardMarkup.java
// @ToString
// @Getter @Setter
// public class InlineKeyboardMarkup {
// 
//     /**
//      * Array of button rows, each represented by an Array of {@link InlineKeyboardButton} objects
//      */
//     private List<List<InlineKeyboardButton>> inline_keyboard;
// }
// 
// Path: src/com/cadiducho/minegram/api/inline/InlineQueryResult.java
// @ToString
// @Getter @Setter
// public abstract class InlineQueryResult {
//     
//     /**
//      * Type of the result
//      */
//     protected final String type;
// 
//     /**
//      * Unique identifier for this result, 1-64 Bytes
//      */
//     protected String id;
//     
//     /**
//      * Optional. Inline keyboard attached to the message
//      */
//     protected InlineKeyboardMarkup reply_markup;
//     
//     /**
//      * Optional. Content of the message to be sent instead of the file
//      */
//     protected InputMessageContent input_message_content;
// 
//     public InlineQueryResult(String type) {
//         this.type = type;
//         this.id = UUID.randomUUID().toString().replace("-", "") + UUID.randomUUID().toString().replace("-", "");
//     }
// 
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/LabeledPrice.java
// @ToString
// @Getter @Setter
// public class LabeledPrice {
//     
//     /**
//      * Portion label
//      */
//     private String label;
//     
//     /**
//      * Price of the product in the smallest units of the currency (integer, not float/double).
//      * For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in https://core.telegram.org/bots/payments/currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
//      */
//     private Integer amount;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/ShippingOption.java
// @ToString
// @Getter @Setter
// public class ShippingOption {
//     
//     /**
//      * Shipping option identifier
//      */
//     private String id;
//     
//     /**
//      * Option title
//      */
//     private String title;
//     
//     /**
//      * List of price portions
//      */
//     private List<LabeledPrice> prices;
//     
// }


import com.cadiducho.minegram.api.inline.InlineKeyboardMarkup;
import com.cadiducho.minegram.api.inline.InlineQueryResult;
import com.cadiducho.minegram.api.*;
import com.cadiducho.minegram.api.exception.*;
import com.cadiducho.minegram.api.payment.LabeledPrice;
import com.cadiducho.minegram.api.payment.ShippingOption;
import java.util.List;
import org.bukkit.plugin.Plugin;
    
    /**
     * Use this method to send answers to callback queries sent from inline keyboards. 
     * The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. 
     * 
     * @param callback_query_id Unique identifier for the query to be answered
     * @param text Text of the notification. If not specified, nothing will be shown to the user, 0-200 characters
     * @param show_alert If true, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to false.
     * @param url URL that will be opened by the user's client. 
            If you have created a Game and accepted the conditions via @Botfather, specify the URL that opens your game – note that this will only work if the query comes from a callback_game button.
            Otherwise, you may use links like telegram.me/your_bot?start=XXXX that open your bot with a parameter.
     * @param cache_time The maximum amount of time in seconds that the result of the callback query may be cached client-side. Telegram apps will support caching starting in version 3.14. Defaults to 0.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean answerCallbackQuery(String callback_query_id, String text, Boolean show_alert, String url, Integer cache_time) throws TelegramException;    
    
    /**
     * Use this method to edit text and game messages sent by the bot or via the bot (for inline bots). 
     * On success, if edited message is sent by the bot, the edited {@link Message} is returned, otherwise True is returned.
     * @param chat_id Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format @channelusername)
     * @param message_id Required if inline_message_id is not specified. Unique identifier of the sent message
     * @param inline_message_id Required if chat_id and message_id are not specified. Identifier of the inline message
     * @param text New text of the message
     * @param parse_mode Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message.
     * @param disable_web_page_preview Disables link previews for links in this message
     * @param reply_markup A JSON-serialized object for an inline keyboard.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
// Path: src/com/cadiducho/minegram/api/inline/InlineKeyboardMarkup.java
// @ToString
// @Getter @Setter
// public class InlineKeyboardMarkup {
// 
//     /**
//      * Array of button rows, each represented by an Array of {@link InlineKeyboardButton} objects
//      */
//     private List<List<InlineKeyboardButton>> inline_keyboard;
// }
// 
// Path: src/com/cadiducho/minegram/api/inline/InlineQueryResult.java
// @ToString
// @Getter @Setter
// public abstract class InlineQueryResult {
//     
//     /**
//      * Type of the result
//      */
//     protected final String type;
// 
//     /**
//      * Unique identifier for this result, 1-64 Bytes
//      */
//     protected String id;
//     
//     /**
//      * Optional. Inline keyboard attached to the message
//      */
//     protected InlineKeyboardMarkup reply_markup;
//     
//     /**
//      * Optional. Content of the message to be sent instead of the file
//      */
//     protected InputMessageContent input_message_content;
// 
//     public InlineQueryResult(String type) {
//         this.type = type;
//         this.id = UUID.randomUUID().toString().replace("-", "") + UUID.randomUUID().toString().replace("-", "");
//     }
// 
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/LabeledPrice.java
// @ToString
// @Getter @Setter
// public class LabeledPrice {
//     
//     /**
//      * Portion label
//      */
//     private String label;
//     
//     /**
//      * Price of the product in the smallest units of the currency (integer, not float/double).
//      * For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in https://core.telegram.org/bots/payments/currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
//      */
//     private Integer amount;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/ShippingOption.java
// @ToString
// @Getter @Setter
// public class ShippingOption {
//     
//     /**
//      * Shipping option identifier
//      */
//     private String id;
//     
//     /**
//      * Option title
//      */
//     private String title;
//     
//     /**
//      * List of price portions
//      */
//     private List<LabeledPrice> prices;
//     
// }


// Path: src/com/cadiducho/minegram/BotAPI.java
import com.cadiducho.minegram.api.inline.InlineKeyboardMarkup;
import com.cadiducho.minegram.api.inline.InlineQueryResult;
import com.cadiducho.minegram.api.*;
import com.cadiducho.minegram.api.exception.*;
import com.cadiducho.minegram.api.payment.LabeledPrice;
import com.cadiducho.minegram.api.payment.ShippingOption;
import java.util.List;
import org.bukkit.plugin.Plugin;

    
    /**
     * Use this method to send answers to callback queries sent from inline keyboards. 
     * The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. 
     * 
     * @param callback_query_id Unique identifier for the query to be answered
     * @param text Text of the notification. If not specified, nothing will be shown to the user, 0-200 characters
     * @param show_alert If true, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to false.
     * @param url URL that will be opened by the user's client. 
            If you have created a Game and accepted the conditions via @Botfather, specify the URL that opens your game – note that this will only work if the query comes from a callback_game button.
            Otherwise, you may use links like telegram.me/your_bot?start=XXXX that open your bot with a parameter.
     * @param cache_time The maximum amount of time in seconds that the result of the callback query may be cached client-side. Telegram apps will support caching starting in version 3.14. Defaults to 0.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean answerCallbackQuery(String callback_query_id, String text, Boolean show_alert, String url, Integer cache_time) throws TelegramException;    
    
    /**
     * Use this method to edit text and game messages sent by the bot or via the bot (for inline bots). 
     * On success, if edited message is sent by the bot, the edited {@link Message} is returned, otherwise True is returned.
     * @param chat_id Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format @channelusername)
     * @param message_id Required if inline_message_id is not specified. Unique identifier of the sent message
     * @param inline_message_id Required if chat_id and message_id are not specified. Identifier of the inline message
     * @param text New text of the message
     * @param parse_mode Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message.
     * @param disable_web_page_preview Disables link previews for links in this message
     * @param reply_markup A JSON-serialized object for an inline keyboard.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean editMessageText(Object chat_id, Integer message_id, String inline_message_id, String text, String parse_mode, Boolean disable_web_page_preview, InlineKeyboardMarkup reply_markup) throws TelegramException;