// 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;
     * @param url         HTTPS url to send updates to. Use an empty string to remove webhook integration
     * @param certificate Optional. Upload your public key certificate so that the root certificate in use can be checked.
     *                    See our <a href="https://core.telegram.org/bots/self-signed">self-signed guide</a> for details.
     * @param max_connections Optional. Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to 40.
     *                        Use lower values to limit the load on your bot‘s server, and higher values to increase your bot’s throughput.
     * @param allowed_updates Optional. List the types of updates you want your bot to receive. 
     *                        For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types.
     *                        See {@link Update} for a complete list of available update types. Specify an empty list to receive all updates regardless of type (default).
     *                        If not specified, the previous setting will be used.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean setWebhook(String url, java.io.File certificate, Integer max_connections, List<String> allowed_updates) throws TelegramException;

    /**
     * Use this method to remove webhook integration if you decide to switch back to {@link BotAPI#getUpdates}. Returns True on success. Requires no parameters.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean deleteWebhook() throws TelegramException;

    /**
     * Use this method to send answers to an inline query. On success, True is returned.
     * No more than <b>50</b> results per query are allowed.
     *
     * @param inlineQueryId Unique identifier for the answered query
     * @param results       A JSON-serialized array of results for the inline query
     * @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;

     * @param url         HTTPS url to send updates to. Use an empty string to remove webhook integration
     * @param certificate Optional. Upload your public key certificate so that the root certificate in use can be checked.
     *                    See our <a href="https://core.telegram.org/bots/self-signed">self-signed guide</a> for details.
     * @param max_connections Optional. Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to 40.
     *                        Use lower values to limit the load on your bot‘s server, and higher values to increase your bot’s throughput.
     * @param allowed_updates Optional. List the types of updates you want your bot to receive. 
     *                        For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types.
     *                        See {@link Update} for a complete list of available update types. Specify an empty list to receive all updates regardless of type (default).
     *                        If not specified, the previous setting will be used.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean setWebhook(String url, java.io.File certificate, Integer max_connections, List<String> allowed_updates) throws TelegramException;

    /**
     * Use this method to remove webhook integration if you decide to switch back to {@link BotAPI#getUpdates}. Returns True on success. Requires no parameters.
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean deleteWebhook() throws TelegramException;

    /**
     * Use this method to send answers to an inline query. On success, True is returned.
     * No more than <b>50</b> results per query are allowed.
     *
     * @param inlineQueryId Unique identifier for the answered query
     * @param results       A JSON-serialized array of results for the inline query
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean answerInlineQuery(String inlineQueryId, List<InlineQueryResult> results) throws TelegramException;