// Path: src/com/cadiducho/minegram/api/inline/ChosenInlineResult.java
// @ToString
// @Getter @Setter
// public class ChosenInlineResult {
//     
//     /**
//      * The unique identifier for the result that was chosen.
//      */
//     private String result_id;
//     
//     /**
//      * 	The user that chose the result.
//      */
//     private User from;
//     
//     /**
//      * Optional. Sender location, only for bots that require user location
//      */
//     private Location location;
//     
//     /**
//      * Optional. Identifier of the sent inline message. 
//      * Available only if there is an inline keyboard attached to the message. 
//      * Will be also received in callback queries and can be used to edit the message.
//      */
//     private String inline_message_id;
//     
//     /**
//      * 	The query that was used to obtain the result.
//      */
//     private String query;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/inline/InlineQuery.java
// @ToString
// @Getter @Setter
// public class InlineQuery {
//     
//     /**
//      * Unique identifier for this query
//      */
//     private String id;
//     
//     /**
//      * Sender
//      */
//     private User from;
//     
//     /**
//      * Optional. Sender location, only for bots that request user location
//      */
//     private Location location;
//     
//     /**
//      * Text of the query
//      */
//     private String query;
//     
//     /**
//      * Offset of the results to be returned, can be controlled by the bot
//      */
//     private String offset;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/PreCheckoutQuery.java
// @ToString
// @Getter @Setter
// public class PreCheckoutQuery {
//     
//     /**
//      * Unique query identifier
//      */
//     private String id;
//     
//     /**
//      * User who sent the query
//      */
//     private User from;
//     
//     /**
//      * Three-letter ISO 4217 currency code
//      */
//     private String currency;
//     
//     /**
//      * Total price 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 total_amount;
//     
//     /**
//      * Bot specified invoice payload
//      */
//     private String invoce_payload;
//     
//     /**
//      * Optional. Identifier of the shipping option chosen by the user
//      */
//     private String shipping_option_id;
//     
//     /**
//      * Optional. Order info provided by the user
//      */
//     private OrderInfo order_info;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/ShippingQuery.java
// @ToString
// @Getter @Setter
// public class ShippingQuery {
//     
//     /**
//      * Unique query identifier
//      */
//     private String id;
//     
//     /**
//      * User who sent the query
//      */
//     private User from;
//     
//     /**
//      * Bot specified invoice payload
//      */
//     private String invoice_payload;
//     
//     /**
//      * User specified shipping address
//      */
//     private ShippingAddress shipping_address;
//     
// }


import com.cadiducho.minegram.api.inline.ChosenInlineResult;
import com.cadiducho.minegram.api.inline.InlineQuery;
import com.cadiducho.minegram.api.payment.PreCheckoutQuery;
import com.cadiducho.minegram.api.payment.ShippingQuery;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/*
 * The MIT License
 *
 * Copyright 2017 Cadiducho.
 * Read more in https://github.com/Cadiducho/Minegram/blob/master/LICENSE
 */

package com.cadiducho.minegram.api;


/**
 * This object represents an incoming update.
 */
@ToString
@Getter @Setter
public class Update {
    
    /**
     * The update‘s unique identifier. 
     * Update identifiers start from a certain positive number and increase sequentially. 
     * This ID becomes especially handy if you’re using Webhooks, 
     * since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order.
     */
    private Integer update_id;
    
    /**
     * Optional. New incoming message of any kind — text, photo, sticker, etc.
     */
    private Message message;
    
    /**
     * Optional. New version of a message that is known to the bot and was edited
     */
    private Message edited_message;
    
    /**
     * Optional. New incoming channel post of any kind — text, photo, sticker, etc.
     */
    private Message channel_post;
    
    /**
     * Optional. New version of a channel post that is known to the bot and was edited
     */
    private Message edited_channel_post;
    /**
     * Optional. New incoming <a href="https://core.telegram.org/bots/api#inline-mode" >inline</a> query
     */
    private InlineQuery inline_query;
    
    /**
     * 	Optional. The result of an New incoming <a href="https://core.telegram.org/bots/api#inline-mode" >inline</a> query query that was chosen by a user and sent to their chat partner.
     */
    private ChosenInlineResult chosen_inline_result;
    
    /**
     * Optional. New incoming callback query
     */
    private CallbackQuery callback_query;
    
    /**
     * Optional. New incoming shipping query. Only for invoices with flexible price
     */
    private ShippingQuery shipping_query;
    
    /**
     * Optional. New incoming pre-checkout query. Contains full information about checkout
     */
// Path: src/com/cadiducho/minegram/api/inline/ChosenInlineResult.java
// @ToString
// @Getter @Setter
// public class ChosenInlineResult {
//     
//     /**
//      * The unique identifier for the result that was chosen.
//      */
//     private String result_id;
//     
//     /**
//      * 	The user that chose the result.
//      */
//     private User from;
//     
//     /**
//      * Optional. Sender location, only for bots that require user location
//      */
//     private Location location;
//     
//     /**
//      * Optional. Identifier of the sent inline message. 
//      * Available only if there is an inline keyboard attached to the message. 
//      * Will be also received in callback queries and can be used to edit the message.
//      */
//     private String inline_message_id;
//     
//     /**
//      * 	The query that was used to obtain the result.
//      */
//     private String query;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/inline/InlineQuery.java
// @ToString
// @Getter @Setter
// public class InlineQuery {
//     
//     /**
//      * Unique identifier for this query
//      */
//     private String id;
//     
//     /**
//      * Sender
//      */
//     private User from;
//     
//     /**
//      * Optional. Sender location, only for bots that request user location
//      */
//     private Location location;
//     
//     /**
//      * Text of the query
//      */
//     private String query;
//     
//     /**
//      * Offset of the results to be returned, can be controlled by the bot
//      */
//     private String offset;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/PreCheckoutQuery.java
// @ToString
// @Getter @Setter
// public class PreCheckoutQuery {
//     
//     /**
//      * Unique query identifier
//      */
//     private String id;
//     
//     /**
//      * User who sent the query
//      */
//     private User from;
//     
//     /**
//      * Three-letter ISO 4217 currency code
//      */
//     private String currency;
//     
//     /**
//      * Total price 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 total_amount;
//     
//     /**
//      * Bot specified invoice payload
//      */
//     private String invoce_payload;
//     
//     /**
//      * Optional. Identifier of the shipping option chosen by the user
//      */
//     private String shipping_option_id;
//     
//     /**
//      * Optional. Order info provided by the user
//      */
//     private OrderInfo order_info;
//     
// }
// 
// Path: src/com/cadiducho/minegram/api/payment/ShippingQuery.java
// @ToString
// @Getter @Setter
// public class ShippingQuery {
//     
//     /**
//      * Unique query identifier
//      */
//     private String id;
//     
//     /**
//      * User who sent the query
//      */
//     private User from;
//     
//     /**
//      * Bot specified invoice payload
//      */
//     private String invoice_payload;
//     
//     /**
//      * User specified shipping address
//      */
//     private ShippingAddress shipping_address;
//     
// }


// Path: src/com/cadiducho/minegram/api/Update.java
import com.cadiducho.minegram.api.inline.ChosenInlineResult;
import com.cadiducho.minegram.api.inline.InlineQuery;
import com.cadiducho.minegram.api.payment.PreCheckoutQuery;
import com.cadiducho.minegram.api.payment.ShippingQuery;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/*
 * The MIT License
 *
 * Copyright 2017 Cadiducho.
 * Read more in https://github.com/Cadiducho/Minegram/blob/master/LICENSE
 */

package com.cadiducho.minegram.api;


/**
 * This object represents an incoming update.
 */
@ToString
@Getter @Setter
public class Update {
    
    /**
     * The update‘s unique identifier. 
     * Update identifiers start from a certain positive number and increase sequentially. 
     * This ID becomes especially handy if you’re using Webhooks, 
     * since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order.
     */
    private Integer update_id;
    
    /**
     * Optional. New incoming message of any kind — text, photo, sticker, etc.
     */
    private Message message;
    
    /**
     * Optional. New version of a message that is known to the bot and was edited
     */
    private Message edited_message;
    
    /**
     * Optional. New incoming channel post of any kind — text, photo, sticker, etc.
     */
    private Message channel_post;
    
    /**
     * Optional. New version of a channel post that is known to the bot and was edited
     */
    private Message edited_channel_post;
    /**
     * Optional. New incoming <a href="https://core.telegram.org/bots/api#inline-mode" >inline</a> query
     */
    private InlineQuery inline_query;
    
    /**
     * 	Optional. The result of an New incoming <a href="https://core.telegram.org/bots/api#inline-mode" >inline</a> query query that was chosen by a user and sent to their chat partner.
     */
    private ChosenInlineResult chosen_inline_result;
    
    /**
     * Optional. New incoming callback query
     */
    private CallbackQuery callback_query;
    
    /**
     * Optional. New incoming shipping query. Only for invoices with flexible price
     */
    private ShippingQuery shipping_query;
    
    /**
     * Optional. New incoming pre-checkout query. Contains full information about checkout
     */
    private PreCheckoutQuery pre_checkout_query;