// 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 cache_time     The maximum amount of time in seconds that the result of the inline query may be cached on
     *                      the server. Defaults to 300.
     * @param is_personal    Pass <i>True</i>, if results may be cached on the server side only for the user that sent
     *                      the query. By default, results may be returned to any user who sends the same query
     * @param next_offset    Pass the offset that a client should send in the next query with the same text to receive
     *                      more results. Pass an empty string if there are no more results or if you don‘t support
     *                      pagination. Offset length can’t exceed 64 bytes.
     * @param switch_pm_text If passed, clients will display a button with specified text that switches the user to a private chat 
     *                      with the bot and sends the bot a start message with the parameter switch_pm_parameter
     * @param switch_pm_parameter
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean answerInlineQuery(String inlineQueryId, List<InlineQueryResult> results, Integer cache_time, Boolean is_personal, String next_offset,
                                    String switch_pm_text, String switch_pm_parameter) throws TelegramException;
    
    /**
     * Use this method to send invoices. On success, the sent Message is returned.
     * @param chat_id Unique identifier for the target private chat
     * @param title Product name
     * @param description Product description
     * @param payload Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
     * @param provider_token Payments provider token, obtained via Botfather
     * @param start_parameter Unique deep-linking parameter that can be used to generate this invoice when used as a start parameter
     * @param currency Three-letter ISO 4217 currency code, see more on https://core.telegram.org/bots/payments#supported-currencies
     * @param prices Price breakdown, a list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)
     * @return {@link Message}
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Message sendInvoice(Integer chat_id, String title, String description, String payload, String provider_token, String start_parameter, String currency,
// 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 cache_time     The maximum amount of time in seconds that the result of the inline query may be cached on
     *                      the server. Defaults to 300.
     * @param is_personal    Pass <i>True</i>, if results may be cached on the server side only for the user that sent
     *                      the query. By default, results may be returned to any user who sends the same query
     * @param next_offset    Pass the offset that a client should send in the next query with the same text to receive
     *                      more results. Pass an empty string if there are no more results or if you don‘t support
     *                      pagination. Offset length can’t exceed 64 bytes.
     * @param switch_pm_text If passed, clients will display a button with specified text that switches the user to a private chat 
     *                      with the bot and sends the bot a start message with the parameter switch_pm_parameter
     * @param switch_pm_parameter
     * @return On success, True is returned.
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Boolean answerInlineQuery(String inlineQueryId, List<InlineQueryResult> results, Integer cache_time, Boolean is_personal, String next_offset,
                                    String switch_pm_text, String switch_pm_parameter) throws TelegramException;
    
    /**
     * Use this method to send invoices. On success, the sent Message is returned.
     * @param chat_id Unique identifier for the target private chat
     * @param title Product name
     * @param description Product description
     * @param payload Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
     * @param provider_token Payments provider token, obtained via Botfather
     * @param start_parameter Unique deep-linking parameter that can be used to generate this invoice when used as a start parameter
     * @param currency Three-letter ISO 4217 currency code, see more on https://core.telegram.org/bots/payments#supported-currencies
     * @param prices Price breakdown, a list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)
     * @return {@link Message}
     * @throws com.cadiducho.minegram.api.exception.TelegramException
     */
    public Message sendInvoice(Integer chat_id, String title, String description, String payload, String provider_token, String start_parameter, String currency,
                                    List<LabeledPrice> prices) throws TelegramException;