import * as _gramio_types from '@gramio/types';
import { TelegramObjects, TelegramInputMedia, TelegramUpdate, APIMethods, APIMethodParams, TelegramResponseParameters, APIMethodReturn, TelegramParams, TelegramMessage } from '@gramio/types';

/**
 * This object describes the types of gifts that can be gifted to a user or a chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#acceptedgifttypes)
 */
declare class AcceptedGiftTypes {
    payload: TelegramObjects.TelegramAcceptedGiftTypes;
    constructor(payload: TelegramObjects.TelegramAcceptedGiftTypes);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * True, if unlimited regular gifts are accepted
     */
    get unlimitedGifts(): boolean;
    /**
     * True, if limited regular gifts are accepted
     */
    get limitedGifts(): boolean;
    /**
     * True, if unique gifts or gifts that can be upgraded to unique for free are accepted
     */
    get uniqueGifts(): boolean;
    /**
     * True, if a Telegram Premium subscription is accepted
     */
    get premiumSubscription(): boolean;
    /**
     * True, if transfers of unique gifts from channels are accepted
     */
    get giftsFromChannels(): boolean;
}

/** Helper to detect if a type is 'any' */
type IsAny<T> = 0 extends 1 & T ? true : false;
interface Suppress<IsSuppressed extends boolean | undefined = undefined> {
    /**
     * Pass `true` if you want to suppress throwing errors of this method.
     *
     * **But this does not undo getting into the `onResponseError` hook**.
     *
     * @example
     * ```ts
     * const response = await bot.api.sendMessage({
     * 		suppress: true,
     * 		chat_id: "@not_found",
     * 		text: "Suppressed method"
     * });
     *
     * if(response instanceof TelegramError) console.error("sendMessage returns an error...")
     * else console.log("Message has been sent successfully");
     * ```
     *
     * */
    suppress?: IsSuppressed;
}
type SuppressedParams<Method extends keyof APIMethods, IsSuppressed extends boolean | undefined = undefined> = APIMethodParams<Method> & Suppress<IsSuppressed>;
interface TelegramError<T extends keyof APIMethods> extends Error {
    method: T;
    params: APIMethodParams<T>;
    code: number;
    payload?: TelegramResponseParameters;
}
type SuppressedReturn<Method extends keyof APIMethods, IsSuppressed extends boolean | undefined = undefined> = true extends IsSuppressed ? TelegramError<Method> | APIMethodReturn<Method> : APIMethodReturn<Method>;
type SuppressedAPIMethods<Methods extends keyof APIMethods = keyof APIMethods> = {
    [APIMethod in Methods]: APIMethodParams<APIMethod> extends undefined ? <IsSuppressed extends boolean | undefined = undefined>(params?: Suppress<IsSuppressed>) => Promise<SuppressedReturn<APIMethod, IsSuppressed>> : undefined extends APIMethodParams<APIMethod> ? <IsSuppressed extends boolean | undefined = undefined>(params?: SuppressedParams<APIMethod, IsSuppressed>) => Promise<SuppressedReturn<APIMethod, IsSuppressed>> : <IsSuppressed extends boolean | undefined = undefined>(params: SuppressedParams<APIMethod, IsSuppressed>) => Promise<SuppressedReturn<APIMethod, IsSuppressed>>;
};
/** The required object that the contexts are based on */
interface BotLike {
    __Derives: Record<UpdateName | "global", {}>;
    api: SuppressedAPIMethods;
    downloadFile(attachment: Attachment | {
        file_id: string;
    } | string): Promise<ArrayBuffer>;
    downloadFile(attachment: Attachment | {
        file_id: string;
    } | string, path: string): Promise<string>;
}
type GetDerives<Bot extends BotLike, Event extends keyof ContextsMapping<Bot>> = IsAny<Bot["__Derives"]> extends true ? {} : Bot["__Derives"]["global"] & Bot["__Derives"][Event];
type MessageContextWithRequiredFrom<Bot extends BotLike> = Constructor<InstanceType<MessageContext<Bot>> & Require<InstanceType<MessageContext<Bot>>, "from">>;
/** Mapping events to their contexts */
type ContextsMapping<Bot extends BotLike> = {
    callback_query: CallbackQueryContext<Bot>;
    chat_join_request: ChatJoinRequestContext<Bot>;
    chat_member: ChatMemberContext<Bot>;
    my_chat_member: ChatMemberContext<Bot>;
    chosen_inline_result: ChosenInlineResultContext<Bot>;
    delete_chat_photo: DeleteChatPhotoContext<Bot>;
    group_chat_created: GroupChatCreatedContext<Bot>;
    inline_query: InlineQueryContext<Bot>;
    invoice: InvoiceContext<Bot>;
    left_chat_member: LeftChatMemberContext<Bot>;
    location: LocationContext<Bot>;
    managed_bot: ManagedBotContext<Bot>;
    managed_bot_created: ManagedBotCreatedContext<Bot>;
    message_auto_delete_timer_changed: MessageAutoDeleteTimerChangedContext<Bot>;
    message: MessageContextWithRequiredFrom<Bot>;
    channel_post: MessageContext<Bot>;
    edited_message: MessageContextWithRequiredFrom<Bot>;
    edited_channel_post: MessageContextWithRequiredFrom<Bot>;
    business_message: MessageContextWithRequiredFrom<Bot>;
    edited_business_message: MessageContextWithRequiredFrom<Bot>;
    guest_message: MessageContextWithRequiredFrom<Bot>;
    deleted_business_messages: BusinessMessagesDeletedContext<Bot>;
    business_connection: BusinessConnectionContext<Bot>;
    migrate_from_chat_id: MigrateFromChatIdContext<Bot>;
    migrate_to_chat_id: MigrateToChatIdContext<Bot>;
    new_chat_members: NewChatMembersContext<Bot>;
    new_chat_photo: NewChatPhotoContext<Bot>;
    new_chat_title: NewChatTitleContext<Bot>;
    passport_data: PassportDataContext<Bot>;
    pinned_message: PinnedMessageContext<Bot>;
    poll_answer: PollAnswerContext<Bot>;
    poll_option_added: PollOptionAddedContext<Bot>;
    poll_option_deleted: PollOptionDeletedContext<Bot>;
    poll: PollContext<Bot>;
    pre_checkout_query: PreCheckoutQueryContext<Bot>;
    proximity_alert_triggered: ProximityAlertTriggeredContext<Bot>;
    write_access_allowed: WriteAccessAllowedContext<Bot>;
    boost_added: BoostAddedContext<Bot>;
    chat_background_set: ChatBackgroundSetContext<Bot>;
    checklist_tasks_done: ChecklistTasksDoneContext<Bot>;
    checklist_tasks_added: ChecklistTasksAddedContext<Bot>;
    direct_message_price_changed: DirectMessagePriceChangedContext<Bot>;
    suggested_post_approved: SuggestedPostApprovedContext<Bot>;
    suggested_post_approval_failed: SuggestedPostApprovalFailedContext<Bot>;
    suggested_post_declined: SuggestedPostDeclinedContext<Bot>;
    suggested_post_paid: SuggestedPostPaidContext<Bot>;
    suggested_post_refunded: SuggestedPostRefundedContext<Bot>;
    forum_topic_created: ForumTopicCreatedContext<Bot>;
    forum_topic_edited: ForumTopicEditedContext<Bot>;
    forum_topic_closed: ForumTopicClosedContext<Bot>;
    forum_topic_reopened: ForumTopicReopenedContext<Bot>;
    general_forum_topic_hidden: GeneralForumTopicHiddenContext<Bot>;
    general_forum_topic_unhidden: GeneralForumTopicUnhiddenContext<Bot>;
    shipping_query: ShippingQueryContext<Bot>;
    successful_payment: SuccessfulPaymentContext<Bot>;
    refunded_payment: RefundedPaymentContext<Bot>;
    users_shared: UsersSharedContext<Bot>;
    chat_shared: ChatSharedContext<Bot>;
    gift: GiftContext<Bot>;
    gift_upgrade_sent: GiftUpgradeSentContext<Bot>;
    unique_gift: UniqueGiftContext<Bot>;
    chat_owner_left: ChatOwnerLeftContext<Bot>;
    chat_owner_changed: ChatOwnerChangedContext<Bot>;
    paid_message_price_changed: PaidMessagePriceChangedContext<Bot>;
    video_chat_ended: VideoChatEndedContext<Bot>;
    video_chat_participants_invited: VideoChatParticipantsInvitedContext<Bot>;
    video_chat_scheduled: VideoChatScheduledContext<Bot>;
    video_chat_started: VideoChatStartedContext<Bot>;
    web_app_data: WebAppDataContext<Bot>;
    service_message: MessageContext<Bot>;
    message_reaction: MessageReactionContext<Bot>;
    message_reaction_count: MessageReactionCountContext<Bot>;
    chat_boost: ChatBoostContext<Bot>;
    removed_chat_boost: RemovedChatBoostContext<Bot>;
    giveaway_created: GiveawayCreatedContext<Bot>;
    giveaway_completed: GiveawayCompletedContext<Bot>;
    giveaway_winners: GiveawayWinnersContext<Bot>;
    purchased_paid_media: PaidMediaPurchasedContext<Bot>;
};
/**
 * Type util to get type of Context
 *
 * @example
 * ```ts
 * type Message = ContextType<Bot, "message">;
 * ```
 *
 *  */
type ContextType<Bot extends BotLike, Name extends keyof ContextsMapping<Bot>> = InstanceType<ContextsMapping<Bot>[Name]> & GetDerives<Bot, Name>;
/** Union type of MessageEvent names */
type MessageEventName = "new_chat_members" | "left_chat_member" | "new_chat_title" | "new_chat_photo" | "delete_chat_photo" | "group_chat_created" | "message_auto_delete_timer_changed" | "migrate_to_chat_id" | "migrate_from_chat_id" | "pinned_message" | "invoice" | "successful_payment" | "refunded_payment" | "users_shared" | "chat_shared" | "gift" | "gift_upgrade_sent" | "unique_gift" | "chat_owner_left" | "chat_owner_changed" | "paid_message_price_changed" | "proximity_alert_triggered" | "write_access_allowed" | "forum_topic_created" | "forum_topic_edited" | "forum_topic_closed" | "forum_topic_reopened" | "general_forum_topic_hidden" | "general_forum_topic_unhidden" | "video_chat_scheduled" | "video_chat_started" | "video_chat_ended" | "video_chat_participants_invited" | "web_app_data" | "location" | "passport_data" | "giveaway_created" | "giveaway_completed" | "giveaway_winners" | "boost_added" | "chat_background_set" | "checklist_tasks_done" | "checklist_tasks_added" | "direct_message_price_changed" | "suggested_post_approved" | "suggested_post_approval_failed" | "suggested_post_declined" | "suggested_post_paid" | "suggested_post_refunded" | "managed_bot_created" | "poll_option_added" | "poll_option_deleted";
/** Custom Event Name */
type CustomEventName = "service_message";
/** Union type of Update names */
type UpdateName = Exclude<keyof TelegramUpdate, "update_id"> | MessageEventName | CustomEventName;
/** Type helper to join union type */
type JoinUnion<T> = T extends infer U ? U extends any ? // biome-ignore lint/suspicious/noExplicitAny: <explanation>
Record<string, any> & U : never : never;
/** Type helper to add array and non-array type */
type MaybeArray<T> = T | T[];
/** Union type of attachments type */
type AttachmentType = TelegramInputMedia["type"] | "sticker" | "video_note" | "voice" | "contact" | "poll" | "venue" | "location" | "story";
/** Permits `string` but gives hints */
type SoftString<S extends string> = (string & {}) | S;
/** Like `Required<T>` but for specified keys of `T` */
type Require<O, K extends keyof O> = {
    [P in K]-?: NonNullable<O[P]>;
};
/** Type helper constructor */
type Constructor<T = {}> = new (...args: any[]) => T;
/** Like `Require<O, K>` but it sets `V` as the value for `K` values */
type RequireValue<O, K extends keyof O, V> = Omit<O, K> & {
    [P in K]-?: V;
};
/** Make some keys optional */
type Optional<T, K extends keyof T> = 
/** We pick every field but `K` and leave them as is */
Pick<T, Exclude<keyof T, K>> /** Then, we take our `K` fields and mark them as optional */ & {
    [P in K]?: T[P];
} /** Lastly, we add `[key: string]: any;` */ /** Lastly, we add `[key: string]: any;` */ & {};
/** Type util to make chat_id optional and add type property */
type id<T, I extends {
    chat_id: string | number;
}> = {
    type: T;
} & Optional<I, "chat_id">;
/** This type represent SendAnimationParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendAnimation = id<"animation", TelegramParams.SendAnimationParams>;
/** This type represent SendAudioParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendAudio = id<"audio", TelegramParams.SendAudioParams>;
/** This type represent SendDocumentParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendDocument = id<"document", TelegramParams.SendDocumentParams>;
/** This type represent SendPhotoParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendPhoto = id<"photo", TelegramParams.SendPhotoParams>;
/** This type represent SendStickerParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendSticker = id<"sticker", TelegramParams.SendStickerParams>;
/** This type represent SendVideoParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendVideo = id<"video", TelegramParams.SendVideoParams>;
/** This type represent SendVideoNoteParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendVideoNote = id<"video_note", TelegramParams.SendVideoNoteParams>;
/** This type represent SendVoiceParams and used by {@link Contexts.MessageContext.sendMedia} */
type tSendVoice = id<"voice", TelegramParams.SendVoiceParams>;
/** This Union type represent a media that can be sended and used by {@link Contexts.MessageContext.sendMedia} */
type tSendMethods = tSendAnimation | tSendAudio | tSendDocument | tSendPhoto | tSendSticker | tSendVideo | tSendVideoNote | tSendVoice;
/** Enum of ChatType property */
declare enum ChatType {
    Private = "private",
    Group = "group",
    Supergroup = "supergroup",
    Channel = "channel"
}
/** Enum of PollType property */
declare enum PollType {
    Regular = "regular",
    Quiz = "quiz"
}
/** Mapping attachments type to their structures */
interface AttachmentsMapping {
    animation: AnimationAttachment;
    audio: AudioAttachment;
    contact: ContactAttachment;
    document: DocumentAttachment;
    live_photo: LivePhotoAttachment;
    location: LocationAttachment;
    photo: PhotoAttachment;
    poll: PollAttachment;
    sticker: StickerAttachment;
    story: StoryAttachment;
    venue: VenueAttachment;
    video_note: VideoNoteAttachment;
    video: VideoAttachment;
    voice: VoiceAttachment;
}
/** A chunk of text for streaming via sendMessageDraft */
type MessageDraftPiece = string | {
    /** Optional draft identifier to control message splitting */
    draft_id?: number;
    /** The text content of this chunk */
    text: string;
    /** Optional entities for this chunk (offsets relative to entire stream) */
    entities?: TelegramObjects.TelegramMessageEntity[];
};
/** Options for SendMixin.streamMessage */
interface StreamMessageOptions {
    /** Offset added to draft IDs. Defaults to 256 * updateId */
    draftIdOffset?: number;
    /** Extra params for sendMessageDraft calls (e.g. parse_mode) */
    draftParams?: Omit<TelegramParams.SendMessageDraftParams, "chat_id" | "draft_id" | "text" | "entities">;
    /** Extra params for sendMessage calls (e.g. reply_markup) */
    messageParams?: Optional<TelegramParams.SendMessageParams, "chat_id" | "text" | "entities">;
    /** AbortSignal to cancel streaming */
    signal?: AbortSignal;
}
/** Enum of EntityType property */
declare enum EntityType {
    Mention = "mention",
    Hashtag = "hashtag",
    Cashtag = "cashtag",
    BotCommand = "bot_command",
    Url = "url",
    Email = "email",
    PhoneNumber = "phone_number",
    Bold = "bold",
    Italic = "italic",
    Underline = "underline",
    Strikethrough = "strikethrough",
    Code = "code",
    Pre = "pre",
    TextLink = "text_link",
    TextMention = "text_mention"
}

/** This object represents one size of a photo or a file / sticker thumbnail */
declare class PhotoSize {
    payload: TelegramObjects.TelegramPhotoSize;
    constructor(payload: TelegramObjects.TelegramPhotoSize);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Identifier for this file, which can be used to download or reuse the file
     */
    get fileId(): string;
    /**
     * Unique identifier for this file, which is supposed to be the same over
     * time and for different bots. Can't be used to download or reuse the file.
     */
    get fileUniqueId(): string;
    /** Photo width */
    get width(): number;
    /** Photo height */
    get height(): number;
    /** File size */
    get fileSize(): number | undefined;
}

/** Simple attachment */
declare class Attachment {
    attachmentType?: AttachmentType;
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/** Base interface for attachment */
interface DefaultAttachment {
    file_id: string;
    file_unique_id: string;
}
/** Attachment with `fileId` and `fileUniqueId` properties */
declare class FileAttachment<T extends DefaultAttachment = DefaultAttachment> extends Attachment {
    protected payload: T;
    /** Returns attachment's type (e.g. `'audio'`, `'photo'`) */
    attachmentType?: AttachmentType;
    constructor(payload: T);
    /** Identifier for this file, which can be used to download or reuse the file */
    get fileId(): string;
    /**
     * Unique identifier for this file, which is supposed to be the same over
     * time and for different bots. Can't be used to download or reuse the file.
     */
    get fileUniqueId(): string;
}

/**
 * This object represents an animation file
 * (GIF or H.264/MPEG-4 AVC video without sound).
 */
declare class AnimationAttachment extends FileAttachment<TelegramObjects.TelegramAnimation> {
    attachmentType: AttachmentType;
    /** Video width as defined by sender */
    get width(): number;
    /** Video height as defined by sender */
    get height(): number;
    /** Duration of the video in seconds as defined by sender */
    get duration(): number;
    /** Animation thumbnail as defined by sender */
    get thumbnail(): PhotoSize | undefined;
    /** Original animation filename as defined by sender */
    get fileName(): string | undefined;
    /** MIME type of the file as defined by sender */
    get mimeType(): string | undefined;
    /** File size */
    get fileSize(): number | undefined;
}

/**
 * This object represents an audio file to be treated as music by the Telegram
 * clients.
 */
declare class AudioAttachment extends FileAttachment<TelegramObjects.TelegramAudio> {
    attachmentType: AttachmentType;
    /** Duration of the audio in seconds as defined by sender */
    get duration(): number;
    /** Performer of the audio as defined by sender or by audio tags */
    get performer(): string | undefined;
    /** Title of the audio as defined by sender or by audio tags */
    get title(): string | undefined;
    /** Original filename as defined by sender */
    get fileName(): string | undefined;
    /** MIME type of the file as defined by sender */
    get mimeType(): string | undefined;
    /** File size */
    get fileSize(): number | undefined;
    /** Thumbnail of the album cover to which the music file belongs */
    get thumbnail(): PhotoSize | undefined;
}

/** This object represents a phone contact. */
declare class Contact {
    payload: TelegramObjects.TelegramContact;
    constructor(payload: TelegramObjects.TelegramContact);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Contact's phone number */
    get phoneNumber(): string;
    /** Contact's first name */
    get firstName(): string;
    /** Contact's last name */
    get lastName(): string | undefined;
    /** Contact's user identifier in Telegram */
    get userId(): number | undefined;
    /** Additional data about the contact in the form of a vCard */
    get vCard(): string | undefined;
}

/** This object represents a phone contact. */
declare class ContactAttachment extends Contact {
    attachmentType: AttachmentType;
}
interface ContactAttachment extends Attachment {
}

/**
 * This object represents a general file (as opposed to photos, voice messages
 * and audio files).
 */
declare class DocumentAttachment extends FileAttachment<TelegramObjects.TelegramDocument> {
    attachmentType: AttachmentType;
    /** Document thumbnail as defined by sender */
    get thumbnail(): PhotoSize | undefined;
    /** Original filename as defined by sender */
    get fileName(): string | undefined;
    /** MIME type of the file as defined by sender */
    get mimeType(): string | undefined;
    /** File size */
    get fileSize(): number | undefined;
}

/** This object represents a live photo. */
declare class LivePhotoAttachment extends FileAttachment<TelegramObjects.TelegramLivePhoto> {
    attachmentType: AttachmentType;
    /** Available sizes of the corresponding static photo */
    get photo(): PhotoSize[] | undefined;
    /** Video width as defined by the sender */
    get width(): number;
    /** Video height as defined by the sender */
    get height(): number;
    /** Duration of the video in seconds as defined by the sender */
    get duration(): number;
    /** MIME type of the file as defined by the sender */
    get mimeType(): string | undefined;
    /** File size in bytes */
    get fileSize(): number | undefined;
}

/** This object represents a point on the map. */
declare class Location {
    payload: TelegramObjects.TelegramLocation;
    constructor(payload: TelegramObjects.TelegramLocation);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Longitude as defined by sender */
    get longitude(): number;
    /** Latitude as defined by sender */
    get latitude(): number;
    /** The radius of uncertainty for the location, measured in meters; `0-1500` */
    get horizontalAccuracy(): number | undefined;
    /**
     * Time relative to the message sending date,
     * during which the location can be updated, in seconds.
     * For active live locations only.
     */
    get livePeriod(): number | undefined;
    /**
     * The direction in which user is moving, in degrees; `1-360`.
     * For active live locations only.
     */
    get heading(): number | undefined;
    /**
     * Maximum distance for proximity alerts about approaching another chat member, in meters.
     * For sent live locations only.
     */
    get proximityAlertRadius(): number | undefined;
}

/** This object represents a point on the map. */
declare class LocationAttachment extends Location {
    attachmentType: AttachmentType;
}
interface LocationAttachment extends Attachment {
}

/** This object represents a photo file with it's sizes */
declare class PhotoAttachment extends Attachment {
    private payload;
    private readonly sorted;
    attachmentType: AttachmentType;
    constructor(payload: PhotoSize[]);
    /** Photo sizes */
    get sizes(): PhotoSize[];
    /** Biggest size of the photo */
    get bigSize(): PhotoSize;
    /** Medium size of the photo */
    get mediumSize(): PhotoSize;
    /** Smallest size of the photo */
    get smallSize(): PhotoSize;
}

/** This object represents a Telegram user or bot. */
declare class User {
    payload: TelegramObjects.TelegramUser;
    constructor(payload: TelegramObjects.TelegramUser);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier for this user or bot */
    get id(): number;
    /** `true`, if this user is a bot */
    isBot(): boolean;
    /** User's or bot's first name */
    get firstName(): string;
    /** User's or bot's last name */
    get lastName(): string | undefined;
    /** User's or bot's username */
    get username(): string | undefined;
    /**
     * [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag)
     * of the user's language
     */
    get languageCode(): string | undefined;
    /** `true`, if this user is a Telegram Premium user */
    isPremium(): true | undefined;
    /** `true`, if this user added the bot to the attachment menu */
    get addedToAttachmentMenu(): true | undefined;
    /**
     * `true`, if the bot can be invited to groups.
     *
     * Returned only in `getMe`.
     */
    canJoinGroups(): boolean | undefined;
    /**
     * `true`, if privacy mode is disabled for the bot.
     *
     * Returned only in `getMe`.
     */
    canReadAllGroupMessages(): boolean | undefined;
    /**
     * `true`, if the bot supports guest queries from chats it is not a member of.
     *
     * Returned only in `getMe`.
     */
    supportsGuestQueries(): boolean | undefined;
    /**
     * `true`, if the bot supports inline queries.
     *
     * Returned only in `getMe`.
     */
    supportsInlineQueries(): boolean | undefined;
    /**
     * `true`, if the bot can be connected to a Telegram Business account to receive its messages.
     *
     * Returned only in `getMe`.
     */
    canConnectToBusiness(): boolean | undefined;
    /**
     * `true`, if the bot allows users to create and delete topics in private chats.
     *
     * Returned only in `getMe`.
     */
    allowsUsersToCreateTopics(): boolean | undefined;
    /**
     * `true`, if other bots can be created to be controlled by the bot.
     *
     * Returned only in `getMe`.
     */
    canManageBots(): boolean | undefined;
}

/**
 * This object represents one special entity in a text message.
 * For example, hashtags, usernames, URLs, etc.
 */
declare class MessageEntity {
    payload: TelegramObjects.TelegramMessageEntity;
    constructor(payload: TelegramObjects.TelegramMessageEntity);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the entity.
     *
     * Can be `mention` (`@username`), `hashtag` (`#hashtag`), `cashtag`
     * (`$USD`), `bot_command` (`/start@jobs_bot`), `url`
     * (`https://telegram.org`), `email` (`do-not-reply@telegram.org`),
     * `phone_number` (`+1-212-555-0123`), `bold` (**bold text**), `italic`
     * (_italic text_), `underline` (underlined text), `strikethrough`
     * (~~strikethrough text~~), “spoiler” (spoiler message), `code` (`monowidth string`),
     * `pre` (`monowidth block`), `text_link` (for clickable text URLs), `text_mention`
     * (for users without usernames)
     */
    get type(): TelegramObjects.TelegramMessageEntityType;
    /** Offset in UTF-16 code units to the start of the entity */
    get offset(): number;
    /** Length of the entity in UTF-16 code units */
    get length(): number;
    /**
     * For `text_link` only, url that will be opened after user taps on the text
     */
    get url(): string | undefined;
    /** For `text_mention` only, the mentioned user */
    get user(): User | undefined;
    /** For `pre` only, the programming language of the entity text */
    get language(): string | undefined;
    /**
     * For `custom_emoji` only, unique identifier of the custom emoji.
     *
     * Use `getCustomEmojiStickers` to get full information about the sticker
     */
    get customEmojiId(): string | undefined;
    /** For `date_time` only, the Unix time associated with the entity */
    get unixTime(): number | undefined;
    /** For `date_time` only, the string that defines the formatting of the date and time */
    get dateTimeFormat(): string | undefined;
}

/** This object represents a file ready to be downloaded. The file can be downloaded via the link `https://api.telegram.org/file/bot<token>/<file_path>`. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling `getFile`. */
declare class File {
    payload: TelegramObjects.TelegramFile;
    constructor(payload: TelegramObjects.TelegramFile);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Identifier for this file, which can be used to download or reuse the file
     */
    get fileId(): string;
    /**
     * Unique identifier for this file, which is supposed to be the same over
     * time and for different bots. Can't be used to download or reuse the file.
     */
    get fileUniqueId(): string;
    /** File size, if known */
    get fileSize(): number | undefined;
    /**
     * File path.
     * Use `https://api.telegram.org/file/bot<token>/<file_path>` to get the
     * file.
     */
    get filePath(): string | undefined;
}

/**
 * This object describes the position on faces where a mask should be placed
 * by default.
 */
declare class MaskPosition {
    payload: TelegramObjects.TelegramMaskPosition;
    constructor(payload: TelegramObjects.TelegramMaskPosition);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * The part of the face relative to which the mask should be placed.
     * One of `forehead`, `eyes`, `mouth`, or `chin`.
     */
    get point(): TelegramObjects.TelegramMaskPositionPoint;
    /**
     * Shift by X-axis measured in widths of the mask scaled to the face size,
     * from left to right. For example, choosing `-1.0` will place mask just to
     * the left of the default mask position.
     */
    get xShift(): number;
    /**
     * Shift by Y-axis measured in heights of the mask scaled to the face size,
     * from top to bottom. For example, `1.0` will place the mask just below the
     * default mask position.
     */
    get yShift(): number;
    /** Mask scaling coefficient. For example, `2.0` means double size. */
    get scale(): number;
}

/** This object represents a sticker. */
declare class StickerAttachment extends FileAttachment<TelegramObjects.TelegramSticker> {
    attachmentType: AttachmentType;
    /**
     * Type of the sticker, currently one of `regular`, `mask`, `custom_emoji`.
     *
     * The type of the sticker is independent from its format, which is determined by the fields `is_animated` and `is_video`.
     */
    get type(): TelegramObjects.TelegramStickerType;
    /** Sticker width */
    get width(): number;
    /** Sticker height */
    get height(): number;
    /** `true`, if the sticker is animated */
    isAnimated(): boolean;
    /** `true`, if the sticker is a video sticker */
    isVideo(): boolean;
    /** Sticker thumbnail in the .WEBP or .JPG format */
    get thumbnail(): PhotoSize | undefined;
    /** Emoji associated with the sticker */
    get emoji(): string | undefined;
    /** Name of the sticker set to which the sticker belongs */
    get setName(): string | undefined;
    /** Is this sticker a premium one? */
    isPremium(): this is Require<this, "premiumAnimation">;
    /** Premium animation for the sticker, if the sticker is premium */
    get premiumAnimation(): File | undefined;
    /** For mask stickers, the position where the mask should be placed */
    get maskPosition(): MaskPosition | undefined;
    /** For custom emoji stickers, unique identifier of the custom emoji */
    get customEmojiId(): string | undefined;
    /** `true`, if the sticker must be repainted to a text color in messages, the color of the Telegram Premium badge in emoji status, white color on chat photos, or another appropriate color in other places */
    get needs_repainting(): true | undefined;
    /** File size */
    get fileSize(): number | undefined;
}

/**
 * This object represents a video file of a specific quality.
 *
 * [Documentation](https://core.telegram.org/bots/api/#videoquality)
 */
declare class VideoQuality {
    payload: TelegramObjects.TelegramVideoQuality;
    constructor(payload: TelegramObjects.TelegramVideoQuality);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Identifier for this file, which can be used to download or reuse the file
     */
    get fileId(): string;
    /**
     * Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.
     */
    get fileUniqueId(): string;
    /**
     * Video width
     */
    get width(): number;
    /**
     * Video height
     */
    get height(): number;
    /**
     * Codec that was used to encode the video, for example, "h264", "h265", or "av01"
     */
    get codec(): TelegramObjects.TelegramVideoQualityCodec;
    /**
     * *Optional*. File size in bytes
     */
    get fileSize(): number | undefined;
}

/** This object represents a video file. */
declare class VideoAttachment extends FileAttachment<TelegramObjects.TelegramVideo> {
    attachmentType: AttachmentType;
    /** Video width as defined by sender */
    get width(): number;
    /** Video height as defined by sender */
    get height(): number;
    /** Duration of the video in seconds as defined by sender */
    get duration(): number;
    /** Video thumbnail */
    get thumbnail(): PhotoSize | undefined;
    /** Original filename as defined by sender */
    get fileName(): string | undefined;
    /** Mime type of a file as defined by sender */
    get mimeType(): string | undefined;
    /** File size */
    get fileSize(): number | undefined;
    /** Video cover */
    get cover(): PhotoSize[] | undefined;
    /** Start timestamp */
    get startTimestamp(): number | undefined;
    /** *Optional*. List of available qualities of the video */
    get qualities(): VideoQuality[] | undefined;
}

/** This object represents a venue. */
declare class Venue {
    payload: TelegramObjects.TelegramVenue;
    constructor(payload: TelegramObjects.TelegramVenue);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Venue location */
    get location(): Location;
    /** Name of the venue */
    get title(): string;
    /** Address of the venue */
    get address(): string;
    /** Foursquare identifier of the venue */
    get foursquareId(): string | undefined;
    /** Foursquare type of the venue */
    get foursquareType(): string | undefined;
    /** Google Places identifier of the venue */
    get googlePlaceId(): string | undefined;
    /**
     * Google Places type of the venue.
     * (See [supported types](https://developers.google.com/places/web-service/supported_types).)
     */
    get googlePlaceType(): string | undefined;
}

/**
 * Describes media attached to a poll, poll option, or quiz explanation.
 *
 * [Documentation](https://core.telegram.org/bots/api/#pollmedia)
 */
declare class PollMedia {
    payload: TelegramObjects.TelegramPollMedia;
    constructor(payload: TelegramObjects.TelegramPollMedia);
    get [Symbol.toStringTag](): string;
    /** Media is an animation, information about the animation */
    get animation(): AnimationAttachment | undefined;
    /** Media is an audio file, information about the file */
    get audio(): AudioAttachment | undefined;
    /** Media is a general file, information about the file */
    get document(): DocumentAttachment | undefined;
    /** Media is a live photo, information about the live photo */
    get livePhoto(): LivePhotoAttachment | undefined;
    /** Media is a shared location, information about the location */
    get location(): Location | undefined;
    /** Media is a photo, available sizes of the photo */
    get photo(): PhotoSize[] | undefined;
    /** Media is a sticker, information about the sticker */
    get sticker(): StickerAttachment | undefined;
    /** Media is a venue, information about the venue */
    get venue(): Venue | undefined;
    /** Media is a video, information about the video */
    get video(): VideoAttachment | undefined;
}

/**
 * This object represents a chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chat)
 */
declare class Chat {
    payload: TelegramObjects.TelegramChat;
    constructor(payload: TelegramObjects.TelegramChat);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Unique identifier for this chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.
     */
    get id(): number;
    /**
     * Type of the chat, can be either “private”, “group”, “supergroup” or “channel”
     */
    get type(): TelegramObjects.TelegramChatType;
    /**
     * *Optional*. Title, for supergroups, channels and group chats
     */
    get title(): string | undefined;
    /**
     * *Optional*. Username, for private chats, supergroups and channels if available
     */
    get username(): string | undefined;
    /**
     * *Optional*. First name of the other party in a private chat
     */
    get firstName(): string | undefined;
    /**
     * *Optional*. Last name of the other party in a private chat
     */
    get lastName(): string | undefined;
    /**
     * *Optional*. *True*, if the supergroup chat is a forum (has [topics](https://telegram.org/blog/topics-in-groups-collectible-usernames#topics-in-groups) enabled)
     */
    get isForum(): true | undefined;
    /**
     * *Optional*. *True*, if the chat is the direct messages chat of a channel
     */
    get isDirectMessages(): true | undefined;
}

/**
 * This object contains information about one answer option in a poll.
 *
 * [Documentation](https://core.telegram.org/bots/api/#polloption)
 */
declare class PollOption {
    payload: TelegramObjects.TelegramPollOption;
    constructor(payload: TelegramObjects.TelegramPollOption);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier of the option, persistent on option addition and deletion */
    get persistentId(): string;
    /**
     * Option text, 1-100 characters
     */
    get text(): string;
    /**
     * *Optional*. Special entities that appear in the option *text*. Currently, only custom emoji entities are allowed in poll option texts
     */
    get textEntities(): MessageEntity[] | undefined;
    /** *Optional*. Media added to the poll option */
    get media(): PollMedia | undefined;
    /**
     * Number of users who voted for this option; may be 0 if unknown
     */
    get voterCount(): number;
    /**
     * *Optional*. User who added the option; omitted if the option wasn't added by a user after poll creation
     */
    get addedByUser(): User | undefined;
    /**
     * *Optional*. Chat that added the option; omitted if the option wasn't added by a chat after poll creation
     */
    get addedByChat(): Chat | undefined;
    /**
     * *Optional*. Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll
     */
    get additionDate(): number | undefined;
}

/** This object contains information about a poll. */
declare class Poll {
    payload: TelegramObjects.TelegramPoll;
    constructor(payload: TelegramObjects.TelegramPoll);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique poll identifier */
    get id(): string;
    /** Poll question, `1-300` characters */
    get question(): string;
    /**
     * *Optional*. Special entities that appear in the *question*. Currently, only custom emoji entities are allowed in poll questions
     */
    get questionEntities(): MessageEntity[] | undefined;
    /** List of poll options */
    get options(): PollOption[];
    /** Total number of users that voted in the poll */
    get totalVoterCount(): number;
    /** `true`, if the poll is closed */
    isClosed(): boolean;
    /** `true`, if the poll is anonymous */
    isAnonymous(): boolean;
    /** Poll type, currently can be `regular` or `quiz` */
    get type(): TelegramObjects.TelegramPollType;
    /** `true`, if the poll allows multiple answers */
    get allowsMultipleAnswers(): boolean;
    /** `true`, if the poll allows to change the chosen answer options */
    get allowsRevoting(): boolean;
    /** `true` if voting is limited to users who have been members of the chat where the poll was originally sent for more than 24 hours */
    get membersOnly(): boolean;
    /** *Optional*. A list of two-letter ISO 3166-1 alpha-2 country codes indicating the countries from which users can vote in the poll. If omitted, then users from any country can participate in the poll. */
    get countryCodes(): string[] | undefined;
    /**
     * Array of 0-based identifiers of the correct answer options. Available only for polls
     * in quiz mode which are closed or were sent (not forwarded) by the bot or to the
     * private chat with the bot.
     */
    get correctOptionIds(): number[] | undefined;
    /**
     * Text that is shown when a user chooses an incorrect answer or taps on the
     * lamp icon in a quiz-style poll, 0-200 characters
     */
    get explanation(): string | undefined;
    /**
     * Special entities like usernames, URLs, bot commands, etc. that appear in
     * the explanation
     */
    get explanationEntities(): MessageEntity[] | undefined;
    /** *Optional*. Media added to the quiz explanation */
    get explanationMedia(): PollMedia | undefined;
    /** Amount of time in seconds the poll will be active after creation */
    get openPeriod(): number | undefined;
    /**
     * Point in time (Unix timestamp) when the poll will be automatically closed
     */
    get closeDate(): number | undefined;
    /**
     * *Optional*. Description of the poll; for polls inside the Message object only
     */
    get description(): string | undefined;
    /**
     * *Optional*. Special entities like usernames, URLs, bot commands, etc. that appear in
     * the description
     */
    get descriptionEntities(): MessageEntity[] | undefined;
    /** *Optional*. Media added to the poll description; for polls inside the Message object only */
    get media(): PollMedia | undefined;
}

/** This object contains information about a poll. */
declare class PollAttachment extends Poll {
    attachmentType: AttachmentType;
}
interface PollAttachment extends Attachment {
}

/**
 * This object represents a story.
 *
 * [Documentation](https://core.telegram.org/bots/api/#story)
 */
declare class Story {
    payload: TelegramObjects.TelegramStory;
    constructor(payload: TelegramObjects.TelegramStory);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier for the story in the chat */
    get id(): number;
    /** Chat that posted the story */
    get chat(): Chat;
}

/**
 * This object represents a story.
 *
 * [Documentation](https://core.telegram.org/bots/api/#story)
 */
declare class StoryAttachment extends Story {
    attachmentType: AttachmentType;
}
interface StoryAttachment extends Attachment {
}

/**
 * This object represents a venue.
 *
 * [Documentation](https://core.telegram.org/bots/api/#venue)
 */
declare class VenueAttachment extends Venue {
    attachmentType: AttachmentType;
}
interface VenueAttachment extends Attachment {
}

/** This object represents a video message. */
declare class VideoNoteAttachment extends FileAttachment<TelegramObjects.TelegramVideoNote> {
    attachmentType: AttachmentType;
    /**
     * Video width and height (diameter of the video message) as defined by
     * sender
     */
    get length(): number;
    /** Duration of the video in seconds as defined by sender */
    get duration(): number;
    /** Video thumbnail */
    get thumbnail(): PhotoSize | undefined;
    /** File size */
    get fileSize(): number | undefined;
}

/** This object represents a voice note. */
declare class VoiceAttachment extends FileAttachment<TelegramObjects.TelegramVoice> {
    attachmentType: AttachmentType;
    /** Duration of the audio in seconds as defined by sender */
    get duration(): number;
    /** MIME type of the file as defined by sender */
    get mimeType(): string | undefined;
    /** File size */
    get fileSize(): number | undefined;
}

/**
 * The background is a freeform gradient that rotates after every message in the chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundfillfreeformgradient)
 */
declare class BackgroundFillFreeformGradient {
    payload: TelegramObjects.TelegramBackgroundFillFreeformGradient;
    constructor(payload: TelegramObjects.TelegramBackgroundFillFreeformGradient);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background fill, always “freeform\_gradient”
     */
    get type(): "freeform_gradient";
    /**
     * A list of the 3 or 4 base colors that are used to generate the freeform gradient in the RGB24 format
     */
    get colors(): number[];
}

/**
 * The background is a gradient fill.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundfillgradient)
 */
declare class BackgroundFillGradient {
    payload: TelegramObjects.TelegramBackgroundFillGradient;
    constructor(payload: TelegramObjects.TelegramBackgroundFillGradient);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background fill, always “gradient”
     */
    get type(): "gradient";
    /**
     * Top color of the gradient in the RGB24 format
     */
    get topColor(): number;
    /**
     * Bottom color of the gradient in the RGB24 format
     */
    get bottomColor(): number;
    /**
     * Clockwise rotation angle of the background fill in degrees; 0-359
     */
    get rotationAngle(): number;
}

/**
 * The background is filled using the selected color.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundfillsolid)
 */
declare class BackgroundFillSolid {
    payload: TelegramObjects.TelegramBackgroundFillSolid;
    constructor(payload: TelegramObjects.TelegramBackgroundFillSolid);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background fill, always “solid”
     */
    get type(): "solid";
    /**
     * The color of the background fill in the RGB24 format
     */
    get color(): number;
}

/**
 * This object describes the way a background is filled based on the selected colors. Currently, it can be one of
 *
 * * [BackgroundFillSolid](https://core.telegram.org/bots/api/#backgroundfillsolid)
 * * [BackgroundFillGradient](https://core.telegram.org/bots/api/#backgroundfillgradient)
 * * [BackgroundFillFreeformGradient](https://core.telegram.org/bots/api/#backgroundfillfreeformgradient)
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundfill)
 */
declare const backgroundFillMap: {
    solid: typeof BackgroundFillSolid;
    gradient: typeof BackgroundFillGradient;
    freeform_gradient: typeof BackgroundFillFreeformGradient;
};

/**
 * The background is taken directly from a built-in chat theme.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundtypechattheme)
 */
declare class BackgroundTypeChatTheme {
    payload: TelegramObjects.TelegramBackgroundTypeChatTheme;
    constructor(payload: TelegramObjects.TelegramBackgroundTypeChatTheme);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background, always “chat\_theme”
     */
    get type(): "chat_theme";
    /**
     * Name of the chat theme, which is usually an emoji
     */
    get themeName(): string;
}

/**
 * The background is automatically filled based on the selected colors.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundtypefill)
 */
declare class BackgroundTypeFill {
    payload: TelegramObjects.TelegramBackgroundTypeFill;
    constructor(payload: TelegramObjects.TelegramBackgroundTypeFill);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background, always “fill”
     */
    get type(): "fill";
    /**
     * The background fill
     */
    get fill(): (typeof backgroundFillMap)[keyof typeof backgroundFillMap];
    /**
     * Dimming of the background in dark themes, as a percentage; 0-100
     */
    get darkThemeDimming(): number;
}

/**
 * The background is a PNG or TGV (gzipped subset of SVG with MIME type “application/x-tgwallpattern”) pattern to be combined with the background fill chosen by the user.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundtypepattern)
 */
declare class BackgroundTypePattern {
    payload: TelegramObjects.TelegramBackgroundTypePattern;
    constructor(payload: TelegramObjects.TelegramBackgroundTypePattern);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background, always “pattern”
     */
    get type(): "pattern";
    /**
     * Document with the pattern
     */
    get document(): DocumentAttachment;
    /**
     * The background fill that is combined with the pattern
     */
    get fill(): (typeof backgroundFillMap)[keyof typeof backgroundFillMap];
    /**
     * Intensity of the pattern when it is shown above the filled background; 0-100
     */
    get intensity(): number;
    /**
     * *Optional*. *True*, if the background fill must be applied only to the pattern itself. All other pixels are black in this case. For dark themes only
     */
    get isInverted(): true | undefined;
    /**
     * *Optional*. *True*, if the background moves slightly when the device is tilted
     */
    get isMoving(): true | undefined;
}

/**
 * The background is a wallpaper in the JPEG format.
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundtypewallpaper)
 */
declare class BackgroundTypeWallpaper {
    payload: TelegramObjects.TelegramBackgroundTypeWallpaper;
    constructor(payload: TelegramObjects.TelegramBackgroundTypeWallpaper);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background, always “wallpaper”
     */
    get type(): "wallpaper";
    /**
     * Document with the wallpaper
     */
    get document(): DocumentAttachment;
    /**
     * Dimming of the background in dark themes, as a percentage; 0-100
     */
    get darkThemeDimming(): number;
    /**
     * *Optional*. *True*, if the wallpaper is downscaled to fit in a 450x450 square and then box-blurred with radius 12
     */
    get isBlurred(): true | undefined;
    /**
     * *Optional*. *True*, if the background moves slightly when the device is tilted
     */
    get isMoving(): true | undefined;
}

/**
 * This object describes the type of a background. Currently, it can be one of
 *
 * * [BackgroundTypeFill](https://core.telegram.org/bots/api/#backgroundtypefill)
 * * [BackgroundTypeWallpaper](https://core.telegram.org/bots/api/#backgroundtypewallpaper)
 * * [BackgroundTypePattern](https://core.telegram.org/bots/api/#backgroundtypepattern)
 * * [BackgroundTypeChatTheme](https://core.telegram.org/bots/api/#backgroundtypechattheme)
 *
 * [Documentation](https://core.telegram.org/bots/api/#backgroundtype)
 */
declare const backgroundTypeMap: {
    fill: typeof BackgroundTypeFill;
    wallpaper: typeof BackgroundTypeWallpaper;
    pattern: typeof BackgroundTypePattern;
    chat_theme: typeof BackgroundTypeChatTheme;
};

/**
 * Describes the birthdate of a user.
 *
 * [Documentation](https://core.telegram.org/bots/api/#birthdate)
 */
declare class Birthdate {
    payload: TelegramObjects.TelegramBirthdate;
    constructor(payload: TelegramObjects.TelegramBirthdate);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Day of the user's birth; 1-31
     */
    get day(): number;
    /**
     * Month of the user's birth; 1-12
     */
    get month(): number;
    /**
     * *Optional*. Year of the user's birth
     */
    get year(): number | undefined;
}

/**
 * Describes the access settings of a bot.
 *
 * [Documentation](https://core.telegram.org/bots/api/#botaccesssettings)
 */
declare class BotAccessSettings {
    payload: TelegramObjects.TelegramBotAccessSettings;
    constructor(payload: TelegramObjects.TelegramBotAccessSettings);
    get [Symbol.toStringTag](): string;
    /** `true`, if only selected users can access the bot. The bot's owner can always access it. */
    isAccessRestricted(): boolean;
    /** *Optional*. The list of other users who have access to the bot if the access is restricted */
    get addedUsers(): User[] | undefined;
}

/** This object represents a bot command */
declare class BotCommand {
    payload: TelegramObjects.TelegramBotCommand;
    constructor(payload: TelegramObjects.TelegramBotCommand);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Text of the command; 1-32 characters. Can contain only lowercase English letters, digits and underscores. */
    get command(): string;
    /** Description of the command; 1-256 characters */
    get description(): string;
}

/** This object represents the bot's description. */
declare class BotDescription {
    payload: TelegramObjects.TelegramBotDescription;
    constructor(payload: TelegramObjects.TelegramBotDescription);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The bot's description */
    get description(): string;
}

/** This object represents the bot's short description. */
declare class BotShortDescription {
    payload: TelegramObjects.TelegramBotShortDescription;
    constructor(payload: TelegramObjects.TelegramBotShortDescription);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The bot's short description */
    get description(): string;
}

/**
 * Represents the rights of a business bot.
 *
 * [Documentation](https://core.telegram.org/bots/api/#businessbotrights)
 */
declare class BusinessBotRights {
    payload: TelegramObjects.TelegramBusinessBotRights;
    constructor(payload: TelegramObjects.TelegramBusinessBotRights);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * True, if the bot can send and edit messages in the private chats that had incoming messages in the last 24 hours
     */
    get canReply(): boolean;
    /**
     * True, if the bot can read messages in the private chats that had incoming messages in the last 24 hours
     */
    get canReadMessages(): boolean;
    /**
     * True, if the bot can delete messages sent by the bot
     * @deprecated Use `canDeleteSentMessages` instead
     */
    get canDeleteOutgoingMessages(): boolean;
    /**
     * True, if the bot can delete messages sent by the bot
     */
    get canDeleteSentMessages(): boolean;
    /**
     * True, if the bot can delete all private messages in managed chats
     */
    get canDeleteAllMessages(): boolean;
    /**
     * True, if the bot can edit the first and last name of the business account
     */
    get canEditName(): boolean;
    /**
     * True, if the bot can edit the bio of the business account
     */
    get canEditBio(): boolean;
    /**
     * True, if the bot can edit the profile photo of the business account
     */
    get canEditProfilePhoto(): boolean;
    /**
     * True, if the bot can edit the username of the business account
     */
    get canEditUsername(): boolean;
    /**
     * True, if the bot can change the privacy settings pertaining to gifts for the business account
     */
    get canChangeGiftSettings(): boolean;
    /**
     * True, if the bot can view gifts and the amount of Telegram Stars owned by the business account
     */
    get canViewGiftsAndStars(): boolean;
    /**
     * True, if the bot can convert regular gifts owned by the business account to Telegram Stars
     */
    get canConvertGiftsToStars(): boolean;
    /**
     * True, if the bot can transfer and upgrade gifts owned by the business account
     */
    get canTransferAndUpgradeGifts(): boolean;
    /**
     * True, if the bot can transfer Telegram Stars received by the business account to its own account, or use them to upgrade and transfer gifts
     */
    get canTransferStars(): boolean;
    /**
     * True, if the bot can post, edit and delete stories on behalf of the business account
     */
    get canManageStories(): boolean;
}

/**
 * Describes the connection of the bot with a business account.
 *
 * [Documentation](https://core.telegram.org/bots/api/#businessconnection)
 */
declare class BusinessConnection {
    payload: TelegramObjects.TelegramBusinessConnection;
    constructor(payload: TelegramObjects.TelegramBusinessConnection);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Unique identifier of the business connection
     */
    get id(): string;
    /**
     * Business account user that created the business connection
     */
    get user(): User;
    /**
     * Identifier of a private chat with the user who created the business connection. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier.
     */
    get userChatId(): number;
    /**
     * Date the connection was established in Unix time
     */
    get date(): number;
    /**
     * True, if the bot can act on behalf of the business account in chats that were active in the last 24 hours
     */
    get canReply(): boolean;
    /**
     * True, if the connection is active
     */
    get isEnabled(): boolean;
}

/**
 * Contains information about the start page settings of a Telegram Business account.
 *
 * [Documentation](https://core.telegram.org/bots/api/#businessintro)
 */
declare class BusinessIntro {
    payload: TelegramObjects.TelegramBusinessIntro;
    constructor(payload: TelegramObjects.TelegramBusinessIntro);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Title text of the business intro
     */
    get title(): string | undefined;
    /**
     * *Optional*. Message text of the business intro
     */
    get message(): string | undefined;
    /**
     * *Optional*. Sticker of the business intro
     */
    get sticker(): StickerAttachment | undefined;
}

/**
 * Contains information about the location of a Telegram Business account.
 *
 * [Documentation](https://core.telegram.org/bots/api/#businesslocation)
 */
declare class BusinessLocation {
    payload: TelegramObjects.TelegramBusinessLocation;
    constructor(payload: TelegramObjects.TelegramBusinessLocation);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Address of the business
     */
    get address(): string;
    /**
     * *Optional*. Location of the business
     */
    get location(): Location | undefined;
}

/** Describes the connection of the bot with a business account. */
declare class BusinessMessagesDeleted {
    payload: TelegramObjects.TelegramBusinessMessagesDeleted;
    constructor(payload: TelegramObjects.TelegramBusinessMessagesDeleted);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier of the business connection */
    get businessConnectionId(): string;
    /** Information about a chat in the business account. The bot may not have access to the chat or the corresponding user. */
    get chat(): Chat;
    /** A list of identifiers of deleted messages in the chat of the business account */
    get messageIds(): number[];
}

/**
 * [Documentation](https://core.telegram.org/bots/api/#businessopeninghours)
 */
declare class BusinessOpeningHours {
    payload: TelegramObjects.TelegramBusinessOpeningHours;
    constructor(payload: TelegramObjects.TelegramBusinessOpeningHours);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique name of the time zone for which the opening hours are defined */
    get timeZoneName(): string;
    /** List of time intervals describing business opening hours */
    get openingHours(): TelegramObjects.TelegramBusinessOpeningHoursInterval[];
}

/**
 * Describes an interval of time during which a business is open.
 *
 * [Documentation](https://core.telegram.org/bots/api/#businessopeninghoursinterval)
 */
declare class BusinessOpeningHoursInterval {
    payload: TelegramObjects.TelegramBusinessOpeningHoursInterval;
    constructor(payload: TelegramObjects.TelegramBusinessOpeningHoursInterval);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * The minute's sequence number in a week, starting on Monday, marking the start of the time interval during which the business is open; 0 - 7 \* 24 \* 60
     */
    get openingMinute(): number;
    /**
     * The minute's sequence number in a week, starting on Monday, marking the end of the time interval during which the business is open; 0 - 8 \* 24 \* 60
     */
    get closingMinute(): number;
}

/** A placeholder, currently holds no information. */
declare class CallbackGame {
    payload: TelegramObjects.TelegramCallbackGame;
    constructor(payload: TelegramObjects.TelegramCallbackGame);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/**
 * This object describes a message that was deleted or is otherwise inaccessible to the bot.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inaccessiblemessage)
 */
declare class InaccessibleMessage {
    payload: TelegramObjects.TelegramInaccessibleMessage;
    constructor(payload: TelegramObjects.TelegramInaccessibleMessage);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique message identifier inside the chat */
    get id(): number;
    /** Chat the message belonged to */
    get chat(): Chat;
    /** Always `0`. The field can be used to differentiate regular and inaccessible messages. */
    get date(): number;
}

/**
 * This object represents a chat background.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatbackground)
 */
declare class ChatBackground {
    payload: TelegramObjects.TelegramChatBackground;
    constructor(payload: TelegramObjects.TelegramChatBackground);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the background
     */
    get type(): TelegramObjects.TelegramBackgroundType;
}

/** This object represents a service message about a user boosting a chat. */
declare class ChatBoostAdded {
    payload: TelegramObjects.TelegramChatBoostAdded;
    constructor(payload: TelegramObjects.TelegramChatBoostAdded);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Number of boosts added by the user */
    get boostCount(): number;
}

/**
 * Describes a service message about an ownership change in the chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatownerchanged)
 */
declare class ChatOwnerChanged {
    payload: TelegramObjects.TelegramChatOwnerChanged;
    constructor(payload: TelegramObjects.TelegramChatOwnerChanged);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * The new owner of the chat
     */
    get newOwner(): User;
}

/**
 * Describes a service message about the chat owner leaving the chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatownerleft)
 */
declare class ChatOwnerLeft {
    payload: TelegramObjects.TelegramChatOwnerLeft;
    constructor(payload: TelegramObjects.TelegramChatOwnerLeft);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. The user which will be the new owner of the chat if the previous owner does not return to the chat
     */
    get newOwner(): User | undefined;
}

/** This object contains information about the chat whose identifier was shared with the bot using a KeyboardButtonRequestChat button. */
declare class ChatShared {
    payload: TelegramObjects.TelegramChatShared;
    constructor(payload: TelegramObjects.TelegramChatShared);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Identifier of the request */
    get requestId(): number;
    /** Identifier of the shared chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot may not have access to the chat and could be unable to use this identifier, unless the chat is already known to the bot by some other means. */
    get chatId(): number;
    /** Title of the chat, if the title was requested by the bot. */
    get title(): string | undefined;
    /** Username of the chat, if the username was requested by the bot and available. */
    get username(): string | undefined;
    /** Available sizes of the chat photo, if the photo was requested by the bot. */
    get photo(): PhotoSize[] | undefined;
}

/**
 * Describes a task in a checklist.
 *
 * [Documentation](https://core.telegram.org/bots/api/#checklisttask)
 */
declare class ChecklistTask {
    payload: TelegramObjects.TelegramChecklistTask;
    constructor(payload: TelegramObjects.TelegramChecklistTask);
    get [Symbol.toStringTag](): string;
    /**
     * Unique identifier of the task
     */
    get id(): number;
    /**
     * Text of the task
     */
    get text(): string;
    /**
     * *Optional*. Special entities that appear in the task text
     */
    get textEntities(): MessageEntity[] | undefined;
    /**
     * *Optional*. User that completed the task; omitted if the task wasn't completed
     */
    get completedByUser(): User | undefined;
    /**
     * *Optional*. Chat that completed the task; omitted if the task wasn't completed by a chat
     */
    get completedByChat(): Chat | undefined;
    /**
     * *Optional*. Point in time (Unix timestamp) when the task was completed; 0 if the task wasn't completed
     */
    get completionDate(): Date | undefined;
}

/**
 * Describes a checklist.
 *
 * [Documentation](https://core.telegram.org/bots/api/#checklist)
 */
declare class Checklist {
    payload: TelegramObjects.TelegramChecklist;
    constructor(payload: TelegramObjects.TelegramChecklist);
    get [Symbol.toStringTag](): string;
    /**
     * Title of the checklist
     */
    get title(): string;
    /**
     * *Optional*. Special entities that appear in the checklist title
     */
    get titleEntities(): MessageEntity[] | undefined;
    /**
     * List of tasks in the checklist
     */
    get tasks(): ChecklistTask[];
    /**
     * *Optional*. *True*, if users other than the creator of the list can add tasks to the list
     */
    get othersCanAddTasks(): true | undefined;
    /**
     * *Optional*. *True*, if users other than the creator of the list can mark tasks as done or not done
     */
    get othersCanMarkTasksAsDone(): true | undefined;
}

/**
 * Describes a service message about tasks added to a checklist.
 *
 * [Documentation](https://core.telegram.org/bots/api/#checklisttasksadded)
 */
declare class ChecklistTasksAdded {
    payload: TelegramObjects.TelegramChecklistTasksAdded;
    constructor(payload: TelegramObjects.TelegramChecklistTasksAdded);
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Message containing the checklist to which the tasks were added. Note that the Message object in this field will not contain the *reply\_to\_message* field even if it itself is a reply.
     */
    get checklistMessage(): Message | undefined;
    /**
     * List of tasks added to the checklist
     */
    get tasks(): TelegramObjects.TelegramChecklistTask[];
}

/**
 * Describes a service message about checklist tasks marked as done or not done.
 *
 * [Documentation](https://core.telegram.org/bots/api/#checklisttasksdone)
 */
declare class ChecklistTasksDone {
    payload: TelegramObjects.TelegramChecklistTasksDone;
    constructor(payload: TelegramObjects.TelegramChecklistTasksDone);
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Message containing the checklist whose tasks were marked as done or not done. Note that the Message object in this field will not contain the *reply\_to\_message* field even if it itself is a reply.
     */
    get checklistMessage(): Message | undefined;
    /**
     * *Optional*. Identifiers of the tasks that were marked as done
     */
    get markedAsDoneTaskIds(): number[] | undefined;
    /**
     * *Optional*. Identifiers of the tasks that were marked as not done
     */
    get markedAsNotDoneTaskIds(): number[] | undefined;
}

/** This object represents an animated emoji that displays a random value. */
declare class Dice {
    payload: TelegramObjects.TelegramDice;
    constructor(payload: TelegramObjects.TelegramDice);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Emoji on which the dice throw animation is based */
    get emoji(): NonNullable<TelegramParams.SendDiceParams["emoji"]>;
    /**
     * Value of the dice,
     * `1-6` for `🎲`, `🎯` and `🎳` base emoji,
     * `1-5` for `🏀` and `⚽️` base emoji,
     * `1-64` for `🎰` base emoji
     */
    get value(): number;
}

/**
 * Describes a service message about a change in the price of direct messages sent to a channel chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#directmessagepricechanged)
 */
declare class DirectMessagePriceChanged {
    payload: TelegramObjects.TelegramDirectMessagePriceChanged;
    constructor(payload: TelegramObjects.TelegramDirectMessagePriceChanged);
    get [Symbol.toStringTag](): string;
    /**
     * *True*, if direct messages are enabled for the channel chat; false otherwise
     */
    get areDirectMessagesEnabled(): boolean;
    /**
     * *Optional*. The new number of Telegram Stars that must be paid by users for each direct message sent to the channel. Does not apply to users who have been exempted by administrators. Defaults to 0.
     */
    get directMessageStarCount(): number | undefined;
}

/**
 * Describes a topic of a direct messages chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#directmessagestopic)
 */
declare class DirectMessagesTopic {
    payload: TelegramObjects.TelegramDirectMessagesTopic;
    constructor(payload: TelegramObjects.TelegramDirectMessagesTopic);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Unique identifier of the topic
     */
    get topicId(): number;
    /**
     * *Optional*. Information about the user that created the topic. Currently, it is always present
     */
    get user(): User | undefined;
}

/** This object represents a game. */
declare class Game {
    payload: TelegramObjects.TelegramGame;
    constructor(payload: TelegramObjects.TelegramGame);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Title of the game */
    get title(): string;
    /** Description of the game */
    get description(): string;
    /** Photo that will be displayed in the game message in chats. */
    get photo(): PhotoSize[] | undefined;
    /**
     * Brief description of the game or high scores included in the game message
     * Can be automatically edited to include current high scores for the game
     * when the bot calls `setGameScore`, or manually edited using
     * `editMessageText`. 0-4096 characters.
     */
    get text(): string | undefined;
    /**
     * Special entities that appear in text, such as usernames, URLs, bot
     * commands, etc.
     */
    get textEntities(): MessageEntity[] | undefined;
    /**
     * Animation that will be displayed in the game message in chats.
     * Upload via BotFather
     */
    get animation(): AnimationAttachment | undefined;
}

/** This object represents a message about a scheduled giveaway. */
declare class Giveaway {
    payload: TelegramObjects.TelegramGiveaway;
    constructor(payload: TelegramObjects.TelegramGiveaway);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The list of chats which the user must join to participate in the giveaway */
    get chats(): Chat[];
    /** Point in time (Unix timestamp) when winners of the giveaway will be selected */
    get winnersSelectionDate(): number;
    /** The number of users which are supposed to be selected as winners of the giveaway */
    get winnerCount(): number;
    /** `true`, if only users who join the chats after the giveaway started should be eligible to win */
    get onlyNewMembers(): true | undefined;
    /** `true`, if the list of giveaway winners will be visible to everyone */
    hasPublicWinners(): true | undefined;
    /** Description of additional giveaway prize */
    get prizeDescription(): string | undefined;
    /** A list of two-letter ISO 3166-1 alpha-2 country codes indicating the countries from which eligible users for the giveaway must come. If empty, then all users can participate in the giveaway. Users with a phone number that was bought on Fragment can always participate in giveaways. */
    get countryCodes(): string[] | undefined;
    /** The number of months the Telegram Premium subscription won from the giveaway will be active for */
    get premiumSubscriptionMonthCount(): number | undefined;
    /** The number of Telegram Stars that were split between giveaway winners; for Telegram Star giveaways only */
    get prizeStarCount(): number | undefined;
}

/** This object represents a message about the completion of a giveaway with public winners. */
declare class GiveawayWinners {
    payload: TelegramObjects.TelegramGiveawayWinners;
    constructor(payload: TelegramObjects.TelegramGiveawayWinners);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The chat that created the giveaway */
    get chat(): Chat;
    /** Identifier of the message with the giveaway in the chat */
    get messageId(): number;
    /** Point in time (Unix timestamp) when winners of the giveaway were selected */
    get winnersSelectionDate(): number;
    /** Total number of winners in the giveaway */
    get winnerCount(): number;
    /** List of up to 100 winners of the giveaway */
    get winners(): User[];
    /** The number of other chats the user had to join in order to be eligible for the giveaway */
    get additionalChatCount(): number | undefined;
    /** The number of months the Telegram Premium subscription won from the giveaway will be active for */
    get premiumSubscriptionMonthCount(): number | undefined;
    /** Number of undistributed prizes */
    get unclaimedPrizeCount(): number | undefined;
    /** `true`, if only users who had joined the chats after the giveaway started were eligible to win */
    get onlyNewMembers(): true | undefined;
    /** `true`, if the giveaway was canceled because the payment for it was refunded */
    wasRefunded(): true | undefined;
    /** Description of additional giveaway prize */
    get prizeDescription(): string | undefined;
    /** The number of Telegram Stars that were split between giveaway winners; for Telegram Star giveaways only */
    get prizeStarCount(): number | undefined;
}

/** This object contains basic information about an invoice. */
declare class Invoice {
    payload: TelegramObjects.TelegramInvoice;
    constructor(payload: TelegramObjects.TelegramInvoice);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Product name */
    get title(): string;
    /** Product description */
    get description(): string;
    /**
     * Unique bot deep-linking parameter that can be used to generate this
     * invoice
     */
    get startParameter(): string;
    /** Three-letter ISO 4217 currency code */
    get currency(): TelegramObjects.TelegramCurrencies;
    /**
     * 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
     * [currencies.json](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).
     */
    get totalAmount(): number;
}

/** Describes the options used for link preview generation. */
declare class LinkPreviewOptions {
    payload: TelegramObjects.TelegramLinkPreviewOptions;
    constructor(payload: TelegramObjects.TelegramLinkPreviewOptions);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** `true`, if the link preview is disabled */
    isDisabled(): boolean | undefined;
    /** URL to use for the link preview. If empty, then the first URL found in the message text will be used */
    get url(): string | undefined;
    /** `true`, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview */
    preferSmallMedia(): boolean | undefined;
    /** `true`, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview */
    preferLargeMedia(): boolean | undefined;
    /** `true`, if the link preview must be shown above the message text; otherwise, the link preview will be shown below the message text */
    showAboveText(): boolean | undefined;
}

/** The message was originally sent on behalf of a chat to a group chat. */
declare class MessageOriginChat extends MessageOrigin {
    payload: TelegramObjects.TelegramMessageOriginChat;
    constructor(payload: TelegramObjects.TelegramMessageOriginChat);
    /** Type of the message origin, always `chat` */
    get type(): "chat";
    /** Date the message was sent originally in Unix time */
    get date(): number;
    /** Chat that sent the message originally */
    get senderChat(): Chat;
    /** For messages originally sent by an anonymous chat administrator, original message author signature */
    get authorSignature(): string | undefined;
}

/** The message was originally sent by an unknown user. */
declare class MessageOriginHiddenUser extends MessageOrigin {
    payload: TelegramObjects.TelegramMessageOriginHiddenUser;
    constructor(payload: TelegramObjects.TelegramMessageOriginHiddenUser);
    /** Type of the message origin, always `hidden_user` */
    get type(): "hidden_user";
    /** Date the message was sent originally in Unix time */
    get date(): number;
    /** Name of the user that sent the message originally */
    get senderUserName(): string;
}

/** The message was originally sent by a known user. */
declare class MessageOriginUser extends MessageOrigin {
    payload: TelegramObjects.TelegramMessageOriginUser;
    constructor(payload: TelegramObjects.TelegramMessageOriginUser);
    /** Type of the message origin, always `user` */
    get type(): "user";
    /** Date the message was sent originally in Unix time */
    get date(): number;
    /** User that sent the message originally */
    get senderUser(): User;
}

interface MessageOriginMapping {
    user: MessageOriginUser;
    chat: MessageOriginChat;
    channel: MessageOriginChannel;
    hidden_user: MessageOriginHiddenUser;
}
declare class MessageOrigin {
    payload: TelegramObjects.TelegramMessageOrigin;
    constructor(payload: TelegramObjects.TelegramMessageOrigin);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Is this message origin a certain one?  */
    is<T extends TelegramObjects.TelegramMessageOrigin["type"]>(type: T): this is MessageOriginMapping[T];
}

/** The message was originally sent to a channel chat. */
declare class MessageOriginChannel extends MessageOrigin {
    payload: TelegramObjects.TelegramMessageOriginChannel;
    constructor(payload: TelegramObjects.TelegramMessageOriginChannel);
    /** Type of the message origin, always `channel` */
    get type(): "channel";
    /** Date the message was sent originally in Unix time */
    get date(): number;
    /** Channel chat to which the message was originally sent */
    get chat(): Chat;
    /** Unique message identifier inside the chat */
    get messageId(): number;
    /** Signature of the original post author */
    get authorSignature(): string | undefined;
}

/**
 * The paid media is a photo.
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmediaphoto)
 */
declare class PaidMediaPhoto {
    payload: TelegramObjects.TelegramPaidMediaPhoto;
    constructor(payload: TelegramObjects.TelegramPaidMediaPhoto);
    get [Symbol.toStringTag](): string;
    /**
     * Type of the paid media, always “photo”
     */
    get type(): "photo";
    /**
     * The photo
     */
    get photo(): PhotoAttachment | undefined;
}

/**
 * The paid media is a video.
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmediavideo)
 */
declare class PaidMediaVideo {
    payload: TelegramObjects.TelegramPaidMediaVideo;
    constructor(payload: TelegramObjects.TelegramPaidMediaVideo);
    get [Symbol.toStringTag](): string;
    /**
     * Type of the paid media, always “video”
     */
    get type(): "video";
    /**
     * The video
     */
    get video(): VideoAttachment;
}

/**
 * The paid media isn't available before the payment.
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmediapreview)
 */
declare class PaidMediaPreview {
    payload: TelegramObjects.TelegramPaidMediaPreview;
    constructor(payload: TelegramObjects.TelegramPaidMediaPreview);
    get [Symbol.toStringTag](): string;
    /**
     * Type of the paid media, always “preview”
     */
    get type(): "preview";
    /**
     * *Optional*. Media width as defined by the sender
     */
    get width(): number | undefined;
    /**
     * *Optional*. Media height as defined by the sender
     */
    get height(): number | undefined;
    /**
     * *Optional*. Duration of the media in seconds as defined by the sender
     */
    get duration(): number | undefined;
}

/**
 * The paid media is a live photo.
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmedialivephoto)
 */
declare class PaidMediaLivePhoto {
    payload: TelegramObjects.TelegramPaidMediaLivePhoto;
    constructor(payload: TelegramObjects.TelegramPaidMediaLivePhoto);
    get [Symbol.toStringTag](): string;
    /** Type of the paid media, always “live_photo” */
    get type(): "live_photo";
    /** The live photo */
    get livePhoto(): LivePhotoAttachment;
}

/**
 * Describes the paid media added to a message.
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmediainfo)
 */
declare class PaidMediaInfo {
    payload: TelegramObjects.TelegramPaidMediaInfo;
    constructor(payload: TelegramObjects.TelegramPaidMediaInfo);
    get [Symbol.toStringTag](): string;
    /**
     * The number of Telegram Stars that must be paid to buy access to the media
     */
    get starCount(): number;
    /**
     * Information about the paid media
     */
    get paidMedia(): (PaidMediaLivePhoto | PaidMediaPreview | PaidMediaVideo | PaidMediaPhoto)[];
}

/** This object contains information about a message that is being replied to, which may come from another chat or forum topic. */
declare class ExternalReplyInfo {
    payload: TelegramObjects.TelegramExternalReplyInfo;
    constructor(payload: TelegramObjects.TelegramExternalReplyInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Origin of the message replied to by the given message */
    get origin(): MessageOriginUser | MessageOriginChat | MessageOriginChannel | MessageOriginHiddenUser;
    /** Chat the original message belongs to. Available only if the chat is a supergroup or a channel. */
    get chat(): Chat | undefined;
    /** Unique message identifier inside the original chat. Available only if the original chat is a supergroup or a channel. */
    get messageId(): number | undefined;
    /** Options used for link preview generation for the original message, if it is a text message */
    get linkPreviewOptions(): LinkPreviewOptions | undefined;
    get checklist(): Checklist | undefined;
    /** Message is an animation, information about the animation */
    get animation(): AnimationAttachment | undefined;
    /** Message is an audio file, information about the file */
    get audio(): AudioAttachment | undefined;
    /** Message is a general file, information about the file */
    get document(): DocumentAttachment | undefined;
    /** Message is a live photo, information about the live photo */
    get livePhoto(): LivePhotoAttachment | undefined;
    /** Message is a photo, available sizes of the photo */
    get photo(): PhotoAttachment | undefined;
    /** Message is a sticker, information about the sticker */
    get sticker(): StickerAttachment | undefined;
    /** Message is a forwarded story */
    get story(): StoryAttachment | undefined;
    /** Message is a video, information about the video */
    get video(): VideoAttachment | undefined;
    /** Message is a video note, information about the video message */
    get videoNote(): VideoNoteAttachment | undefined;
    /** Message is a voice message, information about the file */
    get voice(): VoiceAttachment | undefined;
    /** `true`, if the message media is covered by a spoiler animation */
    hasMediaSpoiler(): true | undefined;
    /** Message is a shared contact, information about the contact */
    get contact(): ContactAttachment | undefined;
    /** Message is a dice with random value */
    get dice(): Dice | undefined;
    /** Message is a game, information about the game */
    get game(): Game | undefined;
    /** Message is a scheduled giveaway, information about the giveaway */
    get giveaway(): Giveaway | undefined;
    /** A giveaway with public winners was completed */
    get giveawayWinners(): GiveawayWinners | undefined;
    /** Message is an invoice for a payment, information about the invoice */
    get invoice(): Invoice | undefined;
    /** Message is a shared location, information about the location */
    get location(): Location | undefined;
    /** Message is a native poll, information about the poll */
    get poll(): Poll | undefined;
    /** Message is a venue, information about the venue */
    get venue(): Venue | undefined;
    get paidMedia(): PaidMediaInfo | undefined;
}

/** This object represents a service message about a forum topic closed in the chat. Currently holds no information. */
declare class ForumTopicClosed {
    payload: TelegramObjects.TelegramForumTopicClosed;
    constructor(payload: TelegramObjects.TelegramForumTopicClosed);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/** This object represents a service message about a new forum topic created in the chat. */
declare class ForumTopicCreated {
    payload: TelegramObjects.TelegramForumTopicCreated;
    constructor(payload: TelegramObjects.TelegramForumTopicCreated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Name of the topic */
    get name(): string;
    /** Color of the topic icon in RGB format */
    get iconColor(): number;
    /** Unique identifier of the custom emoji shown as the topic icon */
    get iconCustomEmojiId(): string | undefined;
    /** *Optional*. True, if the name of the topic wasn't specified explicitly by its creator and likely needs to be changed by the bot */
    get isNameImplicit(): true | undefined;
}

/** This object represents a service message about an edited forum topic. */
declare class ForumTopicEdited {
    payload: TelegramObjects.TelegramForumTopicEdited;
    constructor(payload: TelegramObjects.TelegramForumTopicEdited);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** New name of the topic, if it was edited */
    get name(): string | undefined;
    /** New identifier of the custom emoji shown as the topic icon, if it was edited; an empty string if the icon was removed */
    get iconCustomEmojiId(): string | undefined;
}

/** This object represents a service message about an edited forum topic. */
declare class ForumTopicReopened {
    payload: TelegramObjects.TelegramForumTopicReopened;
    constructor(payload: TelegramObjects.TelegramForumTopicReopened);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/** This object represents a service message about General forum topic hidden in the chat. Currently holds no information. */
declare class GeneralForumTopicHidden {
    payload: TelegramObjects.TelegramGeneralForumTopicHidden;
    constructor(payload: TelegramObjects.TelegramGeneralForumTopicHidden);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/** This object represents a service message about General forum topic unhidden in the chat. Currently holds no information. */
declare class GeneralForumTopicUnhidden {
    payload: TelegramObjects.TelegramGeneralForumTopicUnhidden;
    constructor(payload: TelegramObjects.TelegramGeneralForumTopicUnhidden);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/**
 * This object describes the background of a gift.
 *
 * [Documentation](https://core.telegram.org/bots/api/#giftbackground)
 */
declare class GiftBackground {
    payload: TelegramObjects.TelegramGiftBackground;
    constructor(payload: TelegramObjects.TelegramGiftBackground);
    get [Symbol.toStringTag](): string;
    /**
     * Center color of the background in RGB format
     */
    get centerColor(): number;
    /**
     * Edge color of the background in RGB format
     */
    get edgeColor(): number;
    /**
     * Text color of the background in RGB format
     */
    get textColor(): number;
}

/**
 * Describes a service message about a regular gift that was sent or received.
 *
 * [Documentation](https://core.telegram.org/bots/api/#giftinfo)
 */
declare class Gift {
    payload: TelegramObjects.TelegramGift;
    constructor(payload: TelegramObjects.TelegramGift);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The sticker that represents the gift */
    get sticker(): StickerAttachment;
    /** The number of Telegram Stars that must be paid to send the sticker */
    get starCount(): number;
    /** The number of Telegram Stars that must be paid to upgrade the gift to a unique one */
    get upgradeStarCount(): number | undefined;
    /** The total number of the gifts of this type that can be sent; for limited gifts only */
    get totalCount(): number | undefined;
    /** The number of remaining gifts of this type that can be sent; for limited gifts only */
    get remainingCount(): number | undefined;
    /** *Optional*. True, if the gift can only be purchased by Telegram Premium subscribers */
    get isPremium(): true | undefined;
    /** *Optional*. True, if the gift can be used (after being upgraded) to customize a user's appearance */
    get hasColors(): true | undefined;
    /** *Optional*. The total number of gifts of this type that can be sent by the bot; for limited gifts only */
    get personalTotalCount(): number | undefined;
    /** *Optional*. The number of remaining gifts of this type that can be sent by the bot; for limited gifts only */
    get personalRemainingCount(): number | undefined;
    /** *Optional*. Background of the gift */
    get background(): GiftBackground | undefined;
    /** *Optional*. The total number of different unique gifts that can be obtained by upgrading the gift */
    get uniqueGiftVariantCount(): number | undefined;
    /** Information about the gift */
    get id(): string;
    /** *Optional*. Information about the chat that published the gift */
    get publisherChat(): Chat | undefined;
}

/**
 * Describes a service message about a regular gift that was sent or received.
 *
 * [Documentation](https://core.telegram.org/bots/api/#giftinfo)
 */
declare class GiftInfo {
    payload: TelegramObjects.TelegramGiftInfo;
    constructor(payload: TelegramObjects.TelegramGiftInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Information about the gift */
    get gift(): Gift;
    /** Identifier of the received gift for the bot; only present for gifts received on behalf of business accounts */
    get ownedGiftId(): string | undefined;
    /** Number of Telegram Stars that can be claimed by the receiver by converting the gift; omitted if conversion to Telegram Stars is impossible */
    get convertStarCount(): number | undefined;
    /** Number of Telegram Stars that were prepaid by the sender for the ability to upgrade the gift */
    get prepaidUpgradeStarCount(): number | undefined;
    /** True, if the gift can be upgraded to a unique gift */
    get canBeUpgraded(): true | undefined;
    /** Text of the message that was added to the gift */
    get text(): string | undefined;
    /** Special entities that appear in the text */
    get entities(): MessageEntity[] | undefined;
    /** True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone will be able to see them */
    get isPrivate(): true | undefined;
    /** *Optional*. True, if the gift's upgrade was purchased after the gift was sent */
    get isUpgradeSeparate(): true | undefined;
    /** *Optional*. Unique number reserved for this gift when upgraded */
    get uniqueGiftNumber(): number | undefined;
}

/** This object represents a service message about the completion of a giveaway without public winners. */
declare class GiveawayCompleted {
    payload: TelegramObjects.TelegramGiveawayCompleted;
    constructor(payload: TelegramObjects.TelegramGiveawayCompleted);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Number of winners in the giveaway */
    get winnerCount(): number;
    /** Number of undistributed prizes */
    get unclaimedPrizeCount(): number | undefined;
    /** Message with the giveaway that was completed, if it wasn't deleted */
    get message(): Message | undefined;
    /** *True*, if the giveaway is a Telegram Star giveaway. Otherwise, currently, the giveaway is a Telegram Premium giveaway. */
    get isStarGiveaway(): true | undefined;
}

/** This object represents a service message about the creation of a scheduled giveaway. Currently holds no information. */
declare class GiveawayCreated {
    payload: TelegramObjects.TelegramGiveawayCreated;
    constructor(payload: TelegramObjects.TelegramGiveawayCreated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The number of Telegram Stars that were split between giveaway winners; for Telegram Star giveaways only */
    get prizeStarCount(): number | undefined;
}

/**
 * This object represents a parameter of the inline keyboard button used to
 * automatically authorize a user.
 */
declare class LoginUrl {
    payload: TelegramObjects.TelegramLoginUrl;
    constructor(payload: TelegramObjects.TelegramLoginUrl);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * An HTTP URL to be opened with user authorization data added to the query
     * string when the button is pressed. If the user refuses to provid
     * authorization data, the original URL without information about the user
     * will be opened. The data added is the same as described in Receiving
     * authorization data.
     *
     * **NOTE**: You **must** always check the hash of the received data to
     * verify the authentication and the integrity of the data as described in
     * Checking authorization.
     */
    get url(): string;
    /** New text of the button in forwarded messages. */
    get forwardText(): string | undefined;
    /**
     * Username of a bot, which will be used for user authorization.
     * See Setting up a bot for more details. If not specified, the current
     * bot's username will be assumed. The url's domain must be the same as the
     * domain linked with the bot. See Linking your domain to the bot for more
     * details.
     */
    get botUsername(): string | undefined;
    /**
     * Pass `true` to request the permission for your bot to send messages to the
     * user.
     */
    get requestWriteAccess(): boolean | undefined;
}

/** This object represents one button of an inline keyboard. You must use exactly one of the optional fields. */
declare class InlineKeyboardButton {
    payload: TelegramObjects.TelegramInlineKeyboardButton;
    constructor(payload: TelegramObjects.TelegramInlineKeyboardButton);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Label text on the button */
    get text(): string;
    /** HTTP or tg:// url to be opened when button is pressed */
    get url(): string | undefined;
    /**
     * An HTTP URL used to automatically authorize the user.
     * Can be used as a replacement for the Telegram Login Widget.
     */
    get loginUrl(): LoginUrl | undefined;
    /**
     * Data to be sent in a callback query to the bot when button is pressed,
     * 1-64 bytes
     */
    get callbackData(): string | undefined;
    /**
     * If set, pressing the button will prompt the user to select one of their
     * chats, open that chat and insert the bot's username and the specified
     * inline query in the input field. Can be empty, in which case just the
     * bot's username will be inserted.
     *
     * **Note**: This offers an easy way for users to start using your bot in
     * inline mode when they are currently in a private chat with it. Especially
     * useful when combined with `switch_pm…` actions – in this case the user will
     * be automatically returned to the chat they switched from, skipping the
     * chat selection screen.
     */
    get switchInlineQuery(): string | undefined;
    /**
     * If set, pressing the button will insert the bot's username and the
     * specified inline query in the current chat's input field. Can be empty, in
     * which case only the bot's username will be inserted.
     *
     * This offers a quick way for the user to open your bot in inline mode in
     * the same chat – good for selecting something from multiple options.
     */
    get switchInlineQueryCurrentChat(): string | undefined;
    /**
     * Description of the game that will be launched when the user presses the
     * button.
     *
     * **NOTE**: This type of button **must** always be the first button in the
     * first row.
     */
    get callbackGame(): CallbackGame | undefined;
    /**
     * Specify `true`, to send a Pay button.
     *
     * **NOTE**: This type of button **must** always be the first button in the first row.
     */
    get pay(): boolean | undefined;
}

/** This object represents an inline keyboard that appears right next to the message it belongs to. */
declare class InlineKeyboardMarkup {
    payload: TelegramObjects.TelegramInlineKeyboardMarkup;
    constructor(payload: TelegramObjects.TelegramInlineKeyboardMarkup);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Array of button rows */
    get inlineKeyboard(): InlineKeyboardButton[][];
}

/**
 * This object contains information about the bot that was created to be managed by the current bot.
 *
 * [Documentation](https://core.telegram.org/bots/api/#managedbotcreated)
 */
declare class ManagedBotCreated {
    payload: TelegramObjects.TelegramManagedBotCreated;
    constructor(payload: TelegramObjects.TelegramManagedBotCreated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Information about the bot. The bot's token can be fetched using the method `getManagedBotToken`.
     */
    get bot(): User;
}

/** This object represents a service message about a change in auto-delete timer settings */
declare class MessageAutoDeleteTimerChanged {
    payload: TelegramObjects.TelegramMessageAutoDeleteTimerChanged;
    constructor(payload: TelegramObjects.TelegramMessageAutoDeleteTimerChanged);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** New auto-delete time for messages in the chat */
    get messageAutoDeleteTime(): number;
}

/**
 * Contains data required for decrypting and authenticatin
 * `EncryptedPassportElement`. See the Telegram Passport Documentation for a
 * complete description of the data decryption and authentication processes.
 */
declare class EncryptedCredentials {
    payload: TelegramObjects.TelegramEncryptedCredentials;
    constructor(payload: TelegramObjects.TelegramEncryptedCredentials);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Base64-encoded encrypted JSON-serialized data with unique user's payload,
     * data hashes and secrets required for `EncryptedPassportElement` decryption
     * and authentication
     */
    get data(): string;
    /** Base64-encoded data hash for data authentication */
    get hash(): string;
    /**
     * Base64-encoded secret, encrypted with the bot's public RSA key, required
     * for data decryption
     */
    get secret(): string;
}

/**
 * This object represents a file uploaded to Telegram Passport.
 * Currently all Telegram Passport files are in JPEG format when decrypted and
 * don't exceed 10MB.
 */
declare class PassportFile {
    payload: TelegramObjects.TelegramPassportFile;
    constructor(payload: TelegramObjects.TelegramPassportFile);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Identifier for this file, which can be used to download or reuse the file
     */
    get fileId(): string;
    /**
     * Unique identifier for this file, which is supposed to be the same over
     * time and for different bots. Can't be used to download or reuse the file.
     */
    get fileUniqueId(): string;
    /** File size */
    get fileSize(): number;
    /** Unix time when the file was uploaded */
    get fileDate(): number;
}

/**
 * Contains information about documents or other Telegram Passport elements
 * shared with the bot by the user.
 */
declare class EncryptedPassportElement {
    payload: TelegramObjects.TelegramEncryptedPassportElement;
    constructor(payload: TelegramObjects.TelegramEncryptedPassportElement);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Element type. One of `personal_details`, `passport`, `driver_license`,
     * `identity_card`, `internal_passport`, `address`, `utility_bill`,
     * `bank_statement`, `rental_agreement`, `passport_registration`,
     * `temporary_registration`, `phone_number`, `email`.
     */
    get type(): TelegramObjects.TelegramEncryptedPassportElementType;
    /**
     * Base64-encoded encrypted Telegram Passport element data provided by th
     * user, available for `personal_details`, `passport`, `driver_license`,
     * `identity_card`, `internal_passport` and `address` types.
     * Can be decrypted and verified using the accompanying
     * `EncryptedCredentials`.
     */
    get data(): string | undefined;
    /** User's verified phone number, available only for `phone_number` type */
    get phoneNumber(): string | undefined;
    /** User's verified email address, available only for `email` type */
    get email(): string | undefined;
    /**
     * Array of encrypted files with documents provided by the user, available
     * for `utility_bill`, `bank_statement`, `rental_agreement`,
     * `passport_registration` and `temporary_registration` types. Files can be
     * decrypted and verified using the accompanying `EncryptedCredentials`.
     */
    get files(): PassportFile[] | undefined;
    /**
     * Encrypted file with the front side of the document, provided by the user.
     * Available for `passport`, `driver_license`, `identity_card` and
     * `internal_passport`. The file can be decrypted and verified using the
     * accompanying `EncryptedCredentials`.
     */
    get frontSide(): PassportFile | undefined;
    /**
     * Encrypted file with the reverse side of the document, provided by the
     * user. Available for `driver_license` and `identity_card`. The file can be
     * decrypted and verified using the accompanying `EncryptedCredentials`.
     */
    get reverseSide(): PassportFile | undefined;
    /**
     * Encrypted file with the selfie of the user holding a document, provided by
     * the user; available for `passport`, `driver_license`, `identity_card` and
     * `internal_passport`. The file can be decrypted and verified using the
     * accompanying `EncryptedCredentials`.
     */
    get selfie(): PassportFile | undefined;
    /**
     * Array of encrypted files with translated versions of documents provided by
     * the user. Available if requested for `passport`, `driver_license`,
     * `identity_card`, `internal_passport`, `utility_bill`, `bank_statement`,
     * `rental_agreement`, `passport_registration` and `temporary_registration`
     * types. Files can be decrypted and verified using the accompanying
     * `EncryptedCredentials`.
     */
    get translation(): PassportFile[] | undefined;
    /**
     * Base64-encoded element hash for using in `PassportElementErrorUnspecified`
     */
    get hash(): string;
}

/**
 * Contains information about Telegram Passport data shared with the bot by the
 * user.
 */
declare class PassportData {
    payload: TelegramObjects.TelegramPassportData;
    constructor(payload: TelegramObjects.TelegramPassportData);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Array with information about documents and other Telegram Passport
     * elements that was shared with the bot
     */
    get data(): EncryptedPassportElement[] | undefined;
    /** Encrypted credentials required to decrypt the data */
    get credentials(): EncryptedCredentials;
}

/**
 * Describes a service message about an option added to a poll.
 *
 * [Documentation](https://core.telegram.org/bots/api/#polloptionadded)
 */
declare class PollOptionAdded {
    payload: TelegramObjects.TelegramPollOptionAdded;
    constructor(payload: TelegramObjects.TelegramPollOptionAdded);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Message containing the poll to which the option was added, if known. Note that the Message object in this field will not contain the *reply_to_message* field even if it itself is a reply.
     */
    get pollMessage(): InaccessibleMessage | Omit<Message, "replyMessage"> | undefined;
    /** Unique identifier of the added option */
    get optionPersistentId(): string;
    /** Option text */
    get optionText(): string;
    /** *Optional*. Special entities that appear in the *optionText* */
    get optionTextEntities(): MessageEntity[] | undefined;
}

/**
 * Describes a service message about an option deleted from a poll.
 *
 * [Documentation](https://core.telegram.org/bots/api/#polloptiondeleted)
 */
declare class PollOptionDeleted {
    payload: TelegramObjects.TelegramPollOptionDeleted;
    constructor(payload: TelegramObjects.TelegramPollOptionDeleted);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Message containing the poll from which the option was deleted, if known. Note that the Message object in this field will not contain the *reply_to_message* field even if it itself is a reply.
     */
    get pollMessage(): InaccessibleMessage | Omit<Message, "replyMessage"> | undefined;
    /** Unique identifier of the deleted option */
    get optionPersistentId(): string;
    /** Option text */
    get optionText(): string;
    /** *Optional*. Special entities that appear in the *optionText* */
    get optionTextEntities(): MessageEntity[] | undefined;
}

/**
 * This object represents the content of a service message,
 * sent whenever a user in the chat triggers a proximity alert set by another user.
 */
declare class ProximityAlertTriggered {
    payload: TelegramObjects.TelegramProximityAlertTriggered;
    constructor(payload: TelegramObjects.TelegramProximityAlertTriggered);
    /** User that triggered the alert */
    get traveler(): User;
    /** User that set the alert */
    get watcher(): User;
    /** The distance between the users */
    get distance(): number;
}

/** This object represents a shipping address. */
declare class ShippingAddress {
    payload: TelegramObjects.TelegramShippingAddress;
    constructor(payload: TelegramObjects.TelegramShippingAddress);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** ISO 3166-1 alpha-2 country code */
    get countryCode(): string;
    /** State, if applicable */
    get state(): string;
    /** City */
    get city(): string;
    /** First line for the address */
    get firstStreetLine(): string;
    /** Second line for the address */
    get secondStreetLine(): string;
    /** Address post code */
    get postCode(): string;
}

/** This object represents information about an order. */
declare class OrderInfo {
    payload: TelegramObjects.TelegramOrderInfo;
    constructor(payload: TelegramObjects.TelegramOrderInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** User name */
    get name(): string | undefined;
    /** User's phone number */
    get phoneNumber(): string | undefined;
    /** User email */
    get email(): string | undefined;
    /** User shipping address */
    get shippingAddress(): ShippingAddress | undefined;
}

/** This object contains basic information about a successful payment. */
declare class SuccessfulPayment {
    payload: TelegramObjects.TelegramSuccessfulPayment;
    constructor(payload: TelegramObjects.TelegramSuccessfulPayment);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Three-letter ISO 4217 currency code */
    get currency(): TelegramObjects.TelegramCurrencies;
    /**
     * 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
     * [currencies.json](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).
     */
    get totalAmount(): number;
    /** Bot specified invoice payload */
    get invoicePayload(): string;
    /** Identifier of the shipping option chosen by the user */
    get shippingOptionId(): string | undefined;
    /** Order info provided by the user */
    get orderInfo(): OrderInfo | undefined;
    /** Telegram payment identifier */
    get telegramPaymentChargeId(): string;
    /** Provider payment identifier */
    get providerPaymentChargeId(): string;
}

/**
 * Describes price of a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostprice)
 */
declare class SuggestedPostPrice {
    payload: TelegramObjects.TelegramSuggestedPostPrice;
    constructor(payload: TelegramObjects.TelegramSuggestedPostPrice);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Currency in which the post will be paid. Currently, must be one of "XTR" for Telegram Stars or "TON" for toncoins
     */
    get currency(): TelegramObjects.TelegramSuggestedPostPriceCurrency;
    /**
     * The amount of the currency that will be paid for the post in the smallest units of the currency
     */
    get amount(): number;
}

/**
 * Describes a service message about the failed approval of a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostapprovalfailed)
 */
declare class SuggestedPostApprovalFailed {
    payload: TelegramObjects.TelegramSuggestedPostApprovalFailed;
    constructor(payload: TelegramObjects.TelegramSuggestedPostApprovalFailed);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Expected price of the post
     */
    get price(): SuggestedPostPrice;
}

/**
 * Describes a service message about the approval of a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostapproved)
 */
declare class SuggestedPostApproved {
    payload: TelegramObjects.TelegramSuggestedPostApproved;
    constructor(payload: TelegramObjects.TelegramSuggestedPostApproved);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Amount paid for the post
     */
    get price(): SuggestedPostPrice | undefined;
    /**
     * Date when the post will be published
     */
    get sendDate(): number;
}

/**
 * Describes a service message about the rejection of a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostdeclined)
 */
declare class SuggestedPostDeclined {
    payload: TelegramObjects.TelegramSuggestedPostDeclined;
    constructor(payload: TelegramObjects.TelegramSuggestedPostDeclined);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. Comment with which the post was declined
     */
    get comment(): string | undefined;
}

/**
 * Contains information about a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostinfo)
 */
declare class SuggestedPostInfo {
    payload: TelegramObjects.TelegramSuggestedPostInfo;
    constructor(payload: TelegramObjects.TelegramSuggestedPostInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * State of the suggested post. Currently, it can be one of "pending", "approved", "declined".
     */
    get state(): TelegramObjects.TelegramSuggestedPostInfoState;
    /**
     * *Optional*. Proposed price of the post. If the field is omitted, then the post is unpaid.
     */
    get price(): SuggestedPostPrice | undefined;
    /**
     * *Optional*. Proposed send date of the post.
     */
    get sendDate(): number | undefined;
}

/**
 * Describes a service message about a successful payment for a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostpaid)
 */
declare class SuggestedPostPaid {
    payload: TelegramObjects.TelegramSuggestedPostPaid;
    constructor(payload: TelegramObjects.TelegramSuggestedPostPaid);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Currency in which the payment was made. Currently, one of "XTR" for Telegram Stars or "TON" for toncoins
     */
    get currency(): TelegramObjects.TelegramSuggestedPostPaidCurrency;
    /**
     * *Optional*. The amount of the currency that was received by the channel in nanotoncoins; for payments in toncoins only
     */
    get amount(): number | undefined;
    /**
     * *Optional*. The amount of Telegram Stars that was received by the channel; for payments in Telegram Stars only
     */
    get starAmount(): TelegramObjects.TelegramStarAmount | undefined;
}

/**
 * Describes a service message about a payment refund for a suggested post.
 *
 * [Documentation](https://core.telegram.org/bots/api/#suggestedpostrefunded)
 */
declare class SuggestedPostRefunded {
    payload: TelegramObjects.TelegramSuggestedPostRefunded;
    constructor(payload: TelegramObjects.TelegramSuggestedPostRefunded);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Reason for the refund. Currently, one of "post_deleted", or "payment_refunded"
     */
    get reason(): TelegramObjects.TelegramSuggestedPostRefundedReason;
}

/** This object contains information about the quoted part of a message that is replied to by the given message. */
declare class TextQuote {
    payload: TelegramObjects.TelegramTextQuote;
    constructor(payload: TelegramObjects.TelegramTextQuote);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Text of the quoted part of a message that is replied to by the given message */
    get text(): string;
    /** Special entities that appear in the quote. Currently, only `bold`, `italic`, `underline`, `strikethrough`, `spoiler`, and `custom_emoji` entities are kept in quotes. */
    get entities(): MessageEntity[] | undefined;
    /** Approximate quote position in the original message in UTF-16 code units as specified by the sender */
    get position(): number;
    /** `true`, if the quote was chosen manually by the message sender. Otherwise, the quote was added automatically by the server. */
    isManual(): true | undefined;
}

/**
 * This object contains information about the color scheme for a user's name, message replies and link previews based on a unique gift.
 *
 * [Documentation](https://core.telegram.org/bots/api/#uniquegiftcolors)
 */
declare class UniqueGiftColors {
    payload: TelegramObjects.TelegramUniqueGiftColors;
    constructor(payload: TelegramObjects.TelegramUniqueGiftColors);
    get [Symbol.toStringTag](): string;
    /**
     * Custom emoji identifier of the unique gift's model
     */
    get modelCustomEmojiId(): string;
    /**
     * Custom emoji identifier of the unique gift's symbol
     */
    get symbolCustomEmojiId(): string;
    /**
     * Main color used in light themes; RGB format
     */
    get lightThemeMainColor(): number;
    /**
     * List of 1-3 additional colors used in light themes; RGB format
     */
    get lightThemeOtherColors(): number[];
    /**
     * Main color used in dark themes; RGB format
     */
    get darkThemeMainColor(): number;
    /**
     * List of 1-3 additional colors used in dark themes; RGB format
     */
    get darkThemeOtherColors(): number[];
}

/**
 * This object describes a unique gift that was upgraded from a regular gift.
 *
 * [Documentation](https://core.telegram.org/bots/api/#uniquegift)
 */
declare class UniqueGift {
    payload: TelegramObjects.TelegramUniqueGift;
    constructor(payload: TelegramObjects.TelegramUniqueGift);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Identifier of the regular gift from which the gift was upgraded
     */
    get giftId(): string;
    /**
     * Human-readable name of the regular gift from which this unique gift was upgraded
     */
    get baseName(): string;
    /**
     * Unique name of the gift. This name can be used in `https://t.me/nft/...` links and story areas
     */
    get name(): string;
    /**
     * Unique number of the upgraded gift among gifts upgraded from the same regular gift
     */
    get number(): number;
    /** *Optional*. True, if the original regular gift was exclusively purchaseable by Telegram Premium subscribers */
    get isPremium(): true | undefined;
    /** *Optional*. True, if the gift was used to craft another gift and isn't available anymore */
    get isBurned(): true | undefined;
    /** *Optional*. True, if the gift is assigned from the TON blockchain and can't be resold or transferred in Telegram */
    get isFromBlockchain(): true | undefined;
    /** *Optional*. The color scheme that can be used by the gift's owner for the chat's name, replies to messages and link previews */
    get colors(): UniqueGiftColors | undefined;
    /** *Optional*. Information about the chat that published the gift */
    get publisherChat(): Chat | undefined;
}

/**
 * Describes a service message about a unique gift that was sent or received.
 *
 * [Documentation](https://core.telegram.org/bots/api/#uniquegiftinfo)
 */
declare class UniqueGiftInfo {
    payload: TelegramObjects.TelegramUniqueGiftInfo;
    constructor(payload: TelegramObjects.TelegramUniqueGiftInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Information about the gift
     */
    get gift(): UniqueGift;
    /**
     * Origin of the gift. Currently, either “upgrade” or “transfer”
     */
    get origin(): TelegramObjects.TelegramUniqueGiftInfoOrigin;
    /**
     * *Optional*. For gifts bought from other users, the currency in which the payment for the gift was done. Currently, one of “XTR” for Telegram Stars or “TON” for toncoins
     */
    get lastResaleCurrency(): TelegramObjects.TelegramUniqueGiftInfoLastResaleCurrency | undefined;
    /**
     * *Optional*. For gifts bought from other users, the price paid for the gift in either Telegram Stars or nanotoncoins
     */
    get lastResaleAmount(): number | undefined;
    /**
     * *Optional*. For gifts bought from other users, the price paid for the gift in either Telegram Stars or nanotoncoins
     */
    get lastResaleStarCount(): number | undefined;
    /**
     * *Optional*. Unique identifier of the received gift for the bot; only present for gifts received on behalf of business accounts
     */
    get ownedGiftId(): string | undefined;
    /**
     * *Optional*. Number of Telegram Stars that must be paid to transfer the gift; omitted if the bot cannot transfer the gift
     */
    get transferStarCount(): number | undefined;
    /**
     * *Optional*. Point in time (Unix timestamp) when the gift can be transferred. If it is in the past, then the gift can be transferred now
     */
    get nextTransferDate(): number | undefined;
}

/** This object contains information about the user whose identifier was shared with the bot using a `KeyboardButtonRequestUser` button. */
declare class SharedUser {
    payload: TelegramObjects.TelegramSharedUser;
    constructor(payload: TelegramObjects.TelegramSharedUser);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Identifier of the shared user. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so 64-bit integers or double-precision float types are safe for storing these identifiers. The bot may not have access to the user and could be unable to use this identifier, unless the user is already known to the bot by some other means. */
    get userId(): number;
    /** First name of the user, if the name was requested by the bot */
    get firstName(): string | undefined;
    /** Last name of the user, if the name was requested by the bot */
    get lastName(): string | undefined;
    /** Username of the user, if the username was requested by the bot */
    get username(): string | undefined;
    /** Available sizes of the chat photo, if the photo was requested by the bot */
    get photo(): PhotoSize[] | undefined;
}

/** This object contains information about the user whose identifier was shared with the bot using a `KeyboardButtonRequestUser` button. */
declare class UsersShared {
    payload: TelegramObjects.TelegramUsersShared;
    constructor(payload: TelegramObjects.TelegramUsersShared);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Identifier of the request */
    get requestId(): number;
    /** Information about users shared with the bot. */
    get users(): SharedUser[];
}

/** This object represents a service message about a video chat ended in the chat. */
declare class VideoChatEnded {
    payload: TelegramObjects.TelegramVideoChatEnded;
    constructor(payload: TelegramObjects.TelegramVideoChatEnded);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Video chat duration; in seconds */
    get duration(): number;
}

/** This object represents a service message about new members invited to a video chat. */
declare class VideoChatParticipantsInvited {
    payload: TelegramObjects.TelegramVideoChatParticipantsInvited;
    constructor(payload: TelegramObjects.TelegramVideoChatParticipantsInvited);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** New members that were invited to the video chat */
    get users(): User[];
}

/**
 * This object represents a service message about a video chat scheduled in the chat
 */
declare class VideoChatScheduled {
    payload: TelegramObjects.TelegramVideoChatScheduled;
    constructor(payload: TelegramObjects.TelegramVideoChatScheduled);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Point in time (Unix timestamp) when the video chat is supposed to be started by a chat administrator */
    get startDate(): number;
}

/**
 * This object represents a service message about a video chat started in the chat.
 * Currently holds no information.
 */
declare class VideoChatStarted {
    payload: TelegramObjects.TelegramVideoChatStarted;
    constructor(payload: TelegramObjects.TelegramVideoChatStarted);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}

/** Contains data sent from a Web App to the bot. */
declare class WebAppData {
    payload: TelegramObjects.TelegramWebAppData;
    constructor(payload: TelegramObjects.TelegramWebAppData);
    /** The data. Be aware that a bad client can send arbitrary data in this field. */
    get data(): string;
    /**
     * Text of the `web_app` keyboard button, from which the Web App was opened.
     * Be aware that a bad client can send arbitrary data in this field.
     */
    get buttonText(): string;
}

/** This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information. */
declare class WriteAccessAllowed {
    payload: TelegramObjects.TelegramWriteAccessAllowed;
    constructor(payload: TelegramObjects.TelegramWriteAccessAllowed);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** `true`, if the access was granted after the user accepted an explicit request from a Web App sent by the method requestWriteAccess */
    get fromRequest(): boolean | undefined;
    /** Name of the Web App which was launched from a link */
    get webAppName(): string | undefined;
    /** `true`, if the access was granted when the bot was added to the attachment or side menu */
    get fromAttachmentMenu(): string | undefined;
}

/** This object represents a message. */
declare class Message {
    payload: TelegramObjects.TelegramMessage;
    constructor(payload: TelegramObjects.TelegramMessage);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique message identifier inside this chat */
    get id(): number;
    /** Unique identifier of a message thread to which the message belongs; for supergroups only */
    get threadId(): number | undefined;
    /** *Optional*. Information about the direct messages chat topic that contains the message */
    get directMessagesTopic(): DirectMessagesTopic | undefined;
    /** Sender, empty for messages sent to channels */
    get from(): User | undefined;
    /**
     * Sender of the message, sent on behalf of a chat.
     * The channel itself for channel messages.
     * The supergroup itself for messages from anonymous group administrators.
     * The linked channel for messages automatically forwarded to the discussion group
     */
    get senderChat(): Chat | undefined;
    /** If the sender of the message boosted the chat, the number of boosts added by the user */
    get senderBoostCount(): number | undefined;
    /** The bot that actually sent the message on behalf of the business account. Available only for outgoing messages sent on behalf of the connected business account. */
    get senderBusinessBot(): User | undefined;
    /** Tag or custom title of the sender of the message; for supergroups only */
    get senderTag(): string | undefined;
    /** Date the message was sent in Unix time */
    get createdAt(): number;
    /**
     * *Optional*. The unique identifier for the guest query. Use this identifier with the method `answerGuestQuery` to send a response message.
     * If non-empty, the message belongs to the chat where the guest bot was summoned, which may not coincide with other existing bot chats sharing the same identifier.
     */
    get guestQueryId(): string | undefined;
    /** Unique identifier of the business connection from which the message was received. If non-empty, the message belongs to a chat of the corresponding business account that is independent from any potential bot chat which might share the same identifier. */
    get businessConnectionId(): string | undefined;
    /** Conversation the message belongs to */
    get chat(): Chat;
    /** Information about the original message for forwarded messages */
    get forwardOrigin(): MessageOriginUser | MessageOriginChat | MessageOriginChannel | MessageOriginHiddenUser | undefined;
    /** `true`, if the message is sent to a forum topic */
    isTopicMessage(): boolean;
    /** `true`, if the message is a channel post that was automatically forwarded to the connected discussion group */
    isAutomaticForward(): true | undefined;
    /** For replies, the original message */
    get replyMessage(): Omit<Message, "replyMessage"> | undefined;
    /**  For replies to a story, the original story */
    get replyStory(): Story | undefined;
    /** *Optional*. Identifier of the specific checklist task that is being replied to */
    get replyToChecklistTaskId(): number | undefined;
    /** *Optional*. Persistent identifier of the specific poll option that is being replied to */
    get replyToPollOptionId(): string | undefined;
    get checklist(): Checklist | undefined;
    /** Information about the message that is being replied to, which may come from another chat or forum topic */
    get externalReply(): ExternalReplyInfo | undefined;
    /** For replies that quote part of the original message, the quoted part of the message */
    get quote(): TextQuote | undefined;
    /** Bot through which the message was sent */
    get viaBot(): User | undefined;
    /** *Optional*. For a message sent by a guest bot, this is the user whose original message triggered the bot's response */
    get guestBotCallerUser(): User | undefined;
    /** *Optional*. For a message sent by a guest bot, this is the chat whose original message triggered the bot's response */
    get guestBotCallerChat(): Chat | undefined;
    /** Date the message was last edited in Unix time */
    get updatedAt(): number | undefined;
    /** `true`, if the message can't be forwarded */
    hasProtectedContent(): true | undefined;
    /** `true`, True, if the message was sent by an implicit action, for example, as an away or a greeting business message, or as a scheduled message */
    isFromOffline(): true | undefined;
    /** *Optional*. *True*, if the message is a paid post */
    isPaidPost(): true | undefined;
    /** The unique identifier of a media message group this message belongs to */
    get mediaGroupId(): string | undefined;
    /**
     * Signature of the post author for messages in channels,
     * or the custom title of an anonymous group administrator
     */
    get authorSignature(): string | undefined;
    /**
     * *Optional*. The number of Telegram Stars that were paid by the sender of the message to send it
     */
    get paidStarCount(): number | undefined;
    /**
     * For text messages, the actual UTF-8 text of the message, 0-4096 characters
     */
    get text(): string | undefined;
    /**
     * For text messages, special entities like usernames, URLs, bot commands,
     * etc. that appear in the text
     */
    get entities(): MessageEntity[] | undefined;
    /** Options used for link preview generation for the message, if it is a text message and link preview options were changed */
    get linkPreviewOptions(): LinkPreviewOptions | undefined;
    /** *Optional*. Information about suggested post parameters if the message is a suggested post */
    get suggestedPostInfo(): SuggestedPostInfo | undefined;
    /** Unique identifier of the message effect added to the message */
    get effectId(): string | undefined;
    /**
     * Message is an animation, information about the animation. For backward
     * compatibility, when this field is set, the `document` field will also be set
     */
    get animation(): AnimationAttachment | undefined;
    /** Message is an audio file, information about the file */
    get audio(): AudioAttachment | undefined;
    /** Message is a general file, information about the file */
    get document(): DocumentAttachment | undefined;
    /**
     * Message is a live photo, information about the live photo. For backward
     * compatibility, when this field is set, the `photo` field will also be set
     */
    get livePhoto(): LivePhotoAttachment | undefined;
    /** Message is a photo, available sizes of the photo */
    get photo(): PhotoSize[] | undefined;
    /** Message is a sticker, information about the sticker */
    get sticker(): StickerAttachment | undefined;
    /** Message is a forwarded story */
    get story(): StoryAttachment | undefined;
    /** Message is a video, information about the video */
    get video(): VideoAttachment | undefined;
    /** Message is a video note, information about the video message */
    get videoNote(): VideoNoteAttachment | undefined;
    /** Message is a voice message, information about the file */
    get voice(): VoiceAttachment | undefined;
    /**
     * Caption for the animation, audio, document, photo, video or voice,
     * 0-1024 characters
     */
    get caption(): string | undefined;
    /**
     * For messages with a caption, special entities like usernames, URLs, bot
     * commands, etc. that appear in the caption
     */
    get captionEntities(): MessageEntity[] | undefined;
    /**
     * True, if the caption must be shown above the message media
     */
    isShowCaptionAboveMedia(): boolean;
    /** `true`, if the message media is covered by a spoiler animation */
    hasMediaSpoiler(): true | undefined;
    /** Message is a shared contact, information about the contact */
    get contact(): Contact | undefined;
    /** Message is a dice with random value from 1 to 6 */
    get dice(): Dice | undefined;
    /** Message is a game, information about the game */
    get game(): Game | undefined;
    /** Message is a native poll, information about the poll */
    get poll(): Poll | undefined;
    /**
     * Message is a venue, information about the venue.
     * For backward compatibility, when this field is set,
     * the `location` field will also be set
     */
    get venue(): Venue | undefined;
    /** Message is a shared location, information about the location */
    get location(): Location | undefined;
    /**
     * Inline keyboard attached to the message.
     *
     * `login_url` buttons are represented as ordinary `url` buttons.
     */
    get replyMarkup(): InlineKeyboardMarkup | undefined;
    /** The domain name of the website on which the user has logged in. */
    get connectedWebsite(): string | undefined;
    /** Telegram Passport data */
    get passportData(): PassportData | undefined;
    /**
     * New members that were added to the group or supergroup and information
     * about them (the bot itself may be one of these members)
     */
    get newChatMembers(): User[] | undefined;
    /**
     * A member was removed from the group, information about them (this member
     * may be the bot itself)
     */
    get leftChatMember(): User | undefined;
    /** Service message: chat owner has left */
    get chatOwnerLeft(): ChatOwnerLeft | undefined;
    /** Service message: chat owner has changed */
    get chatOwnerChanged(): ChatOwnerChanged | undefined;
    /** A chat title was changed to this value */
    get newChatTitle(): string | undefined;
    /** A chat photo was change to this value */
    get newChatPhoto(): PhotoSize[] | undefined;
    /** Service message: the chat photo was deleted */
    get deleteChatPhoto(): true | undefined;
    /** Service message: the group has been created */
    get groupChatCreated(): true | undefined;
    /**
     * Service message: the supergroup has been created. This field can't be
     * received in a message coming through updates, because bot can't be a
     * member of a supergroup when it is created. It can only be found in
     * `replyMessage` if someone replies to a very first message in a
     * directly created supergroup.
     */
    get supergroupChatCreated(): true | undefined;
    /** Service message: auto-delete timer settings changed in the chat */
    get messageAutoDeleteTimerChanged(): MessageAutoDeleteTimerChanged | undefined;
    /**
     * Service message: the channel has been created. This field can't be
     * received in a message coming through updates, because bot can't be a
     * member of a channel when it is created. It can only be found in
     * `replyMessage` if someone replies to a very first message in a channel.
     */
    get channelChatCreated(): true | undefined;
    /**
     * The group has been migrated to a supergroup with the specified identifier.
     * This number may be greater than 32 bits and some programming languages may
     * have difficulty/silent defects in interpreting it. But it is smaller than
     * 52 bits, so a signed 64 bit integer or double-precision float type are
     * safe for storing this identifier.
     */
    get migrateToChatId(): number | undefined;
    /**
     * The supergroup has been migrated from a group with the specified
     * identifier. This number may be greater than 32 bits and some programming
     * languages may have difficulty/silent defects in interpreting it. But it is
     * smaller than 52 bits, so a signed 64 bit integer or double-precision float
     * type are safe for storing this identifier.
     */
    get migrateFromChatId(): number | undefined;
    /**
     * Specified message was pinned. Note that the Message object in this field
     * will not contain further `replyMessage` fields even if it is itself a
     * reply.
     */
    get pinnedMessage(): InaccessibleMessage | Omit<Message, "replyMessage"> | undefined;
    /** Message is an invoice for a payment, information about the invoice */
    get invoice(): Invoice | undefined;
    /**
     * Message is a service message about a successful payment,
     * information about the payment.
     */
    get successfulPayment(): SuccessfulPayment | undefined;
    /** Service message: a user was shared with the bot */
    get usersShared(): UsersShared | undefined;
    /** Service message: a chat was shared with the bot */
    get chatShared(): ChatShared | undefined;
    /** Service message: a gift was sent to the chat */
    get gift(): GiftInfo | undefined;
    /** Service message: upgrade of a gift was purchased after the gift was sent */
    get giftUpgradeSent(): GiftInfo | undefined;
    /** Service message: a unique gift was sent to the chat */
    get uniqueGift(): UniqueGiftInfo | undefined;
    /**
     * Service message.
     * A user in the chat triggered another user's proximity alert
     * while sharing Live Location.
     */
    get proximityAlertTriggered(): ProximityAlertTriggered | undefined;
    /** Service message: the user allowed the bot added to the attachment menu to write messages */
    get writeAccessAllowed(): WriteAccessAllowed | undefined;
    /** Service message: chat boost added */
    get chatBoostAdded(): ChatBoostAdded | undefined;
    /** Service message: chat background set */
    get chatBackgroundSet(): ChatBackground | undefined;
    /** Service message: checklist tasks done */
    get checklistTasksDone(): ChecklistTasksDone | undefined;
    /** Service message: checklist tasks added */
    /** Service message: checklist tasks added */
    get checklistTasksAdded(): ChecklistTasksAdded | undefined;
    /** Service message: direct message price changed */
    get directMessagePriceChanged(): DirectMessagePriceChanged | undefined;
    /** Service message: a suggested post was approved */
    get suggestedPostApproved(): SuggestedPostApproved | undefined;
    /** Service message: approval of a suggested post has failed */
    get suggestedPostApprovalFailed(): SuggestedPostApprovalFailed | undefined;
    /** Service message: a suggested post was declined */
    get suggestedPostDeclined(): SuggestedPostDeclined | undefined;
    /** Service message: payment for a suggested post was received */
    get suggestedPostPaid(): SuggestedPostPaid | undefined;
    /** Service message: payment for a suggested post was refunded */
    get suggestedPostRefunded(): SuggestedPostRefunded | undefined;
    /** Service message: forum topic created */
    get forumTopicCreated(): ForumTopicCreated | undefined;
    /** Service message: forum topic edited */
    get forumTopicEdited(): ForumTopicEdited | undefined;
    /** Service message: forum topic closed */
    get forumTopicClosed(): ForumTopicClosed | undefined;
    /** Service message: forum topic reopened */
    get forumTopicReopened(): ForumTopicReopened | undefined;
    /** Service message: the 'General' forum topic hidden */
    get generalForumTopicHidden(): GeneralForumTopicHidden | undefined;
    /** Service message: the 'General' forum topic unhidden */
    get generalForumTopicUnhidden(): GeneralForumTopicUnhidden | undefined;
    /** The message is a scheduled giveaway message */
    get giveaway(): Giveaway | undefined;
    /** Service message: a scheduled giveaway was created */
    get giveawayCreated(): GiveawayCreated | undefined;
    /** Service message: a giveaway without public winners was completed */
    get giveawayCompleted(): GiveawayCompleted | undefined;
    /** A giveaway with public winners was completed */
    get giveawayWinners(): GiveawayWinners | undefined;
    /** Service message: video chat scheduled */
    get videoChatScheduled(): VideoChatScheduled | undefined;
    /** Service message: video chat started */
    get videoChatStarted(): VideoChatStarted | undefined;
    /** Service message: video chat ended */
    get videoChatEnded(): VideoChatEnded | undefined;
    /** Service message: new participants invited to a video chat */
    get videoChatParticipantsInvited(): VideoChatParticipantsInvited | undefined;
    /** Service message: data sent by a Web App */
    get webAppData(): WebAppData | undefined;
    /** Service message: user created a bot that will be managed by the current bot */
    get managedBotCreated(): ManagedBotCreated | undefined;
    /** Service message: answer option was added to a poll */
    get pollOptionAdded(): PollOptionAdded | undefined;
    /** Service message: answer option was deleted from a poll */
    get pollOptionDeleted(): PollOptionDeleted | undefined;
}

/**
 * This object represents an incoming callback query from a callback button in
 * an inline keyboard. If the button that originated the query was attached to
 * a message sent by the bot, the field message will be present.
 * If the button was attached to a message sent via the bot (in inline mode),
 * the field inline_message_id will be present.
 * Exactly one of the fields `data` or `game_short_name` will be present.
 */
declare class CallbackQuery {
    payload: TelegramObjects.TelegramCallbackQuery;
    constructor(payload: TelegramObjects.TelegramCallbackQuery);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier for this query */
    get id(): string;
    /** Sender */
    get from(): User;
    /** Sender ID */
    get senderId(): number;
    /**
     * Message sent by the bot with the callback button that originated the query
     */
    get message(): Message | InaccessibleMessage | undefined;
    /**
     * Identifier of the message sent via the bot in inline mode,
     * that originated the query.
     */
    get inlineMessageId(): string | undefined;
    /**
     * Global identifier, uniquely corresponding to the chat to which the message
     * with the callback button was sent. Useful for high scores in games.
     */
    get chatInstance(): string;
    /**
     * Data associated with the callback button.
     * Be aware that a bad client can send arbitrary data in this field.
     */
    get data(): string;
    set data(data: string);
    /**
     * Short name of a Game to be returned,
     * serves as the unique identifier for the game
     */
    get gameShortName(): string | undefined;
}

/** Represents the rights of an administrator in a chat. */
declare class ChatAdministratorRights {
    payload: TelegramObjects.TelegramChatAdministratorRights;
    constructor(payload: TelegramObjects.TelegramChatAdministratorRights);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** `true`, if the user's presence in the chat is hidden */
    isAnonymous(): boolean;
    /** `true`, if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege */
    canManageChat(): boolean;
    /** `true`, if the administrator can delete messages of other users */
    canDeleteMessages(): boolean;
    /** `true`, if the administrator can manage video chats */
    canManageVideoChats(): boolean;
    /** `true`, if the administrator can restrict, ban or unban chat members */
    canRestrictMembers(): boolean;
    /** `true`, if the administrator can add new administrators with a subset of their own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by the user) */
    canPromoteMembers(): boolean;
    /** `true`, if the user is allowed to change the chat title, photo and other settings */
    canChangeInfo(): boolean;
    /** `true`, if the user is allowed to invite new users to the chat */
    canInviteUsers(): boolean;
    /** `true`, if the administrator can post in the channel; channels only */
    canPostMessages(): boolean | undefined;
    /** `true`, if the administrator can edit messages of other users and can pin messages; channels only */
    canEditMessages(): boolean | undefined;
    /** `true`, if the user is allowed to pin messages; groups and supergroups only */
    canPinMessages(): boolean | undefined;
    /** `true`, if the administrator can post stories in the channel; channels only */
    canPostStories(): boolean;
    /** `true`, if the administrator can edit stories posted by other users; channels only */
    canEditStories(): boolean;
    /** `true`, if the administrator can delete stories posted by other users; channels only */
    canDeleteStories(): boolean;
    /** `true`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only */
    canManageTopics(): boolean | undefined;
    /** `true`, if the administrator can manage direct messages of the channel and decline suggested posts; channels only */
    canManageDirectMessages(): boolean | undefined;
    /** `true`, if the administrator can edit the tags of regular members; for groups and supergroups only */
    canManageTags(): boolean | undefined;
}

/** The boost was obtained by the creation of a Telegram Premium giveaway. This boosts the chat 4 times for the duration of the corresponding Telegram Premium subscription. */
declare class ChatBoostSourceGiveaway extends ChatBoostSource {
    payload: TelegramObjects.TelegramChatBoostSourceGiveaway;
    constructor(payload: TelegramObjects.TelegramChatBoostSourceGiveaway);
    /** Source of the boost, always `giveaway` */
    get source(): "giveaway";
    get giveawayMessageId(): number;
    /** User that boosted the chat */
    get user(): User | undefined;
    /** `true`, if the giveaway was completed, but there was no user to win the prize */
    isUnclaimed(): true | undefined;
    /** The number of Telegram Stars that were split between giveaway winners; for Telegram Star giveaways only */
    get prizeStarCount(): number | undefined;
}

/** The boost was obtained by subscribing to Telegram Premium or by gifting a Telegram Premium subscription to another user. */
declare class ChatBoostSourcePremium extends ChatBoostSource {
    payload: TelegramObjects.TelegramChatBoostSourcePremium;
    constructor(payload: TelegramObjects.TelegramChatBoostSourcePremium);
    /** Source of the boost, always `premium` */
    get source(): "premium";
    /** User that boosted the chat */
    get user(): User;
}

interface ChatBoostSourceMapping {
    premium: ChatBoostSourcePremium;
    gift_code: ChatBoostSourceGiftCode;
    giveaway: ChatBoostSourceGiveaway;
}
declare class ChatBoostSource {
    payload: TelegramObjects.TelegramChatBoostSource;
    constructor(payload: TelegramObjects.TelegramChatBoostSource);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Is this chat boost source a certain one? */
    is<T extends TelegramObjects.TelegramChatBoostSource["source"]>(source: T): this is ChatBoostSourceMapping[T];
}

/** The boost was obtained by the creation of Telegram Premium gift codes to boost a chat. Each such code boosts the chat 4 times for the duration of the corresponding Telegram Premium subscription. */
declare class ChatBoostSourceGiftCode extends ChatBoostSource {
    payload: TelegramObjects.TelegramChatBoostSourceGiftCode;
    constructor(payload: TelegramObjects.TelegramChatBoostSourceGiftCode);
    /** Source of the boost, always `gift_code` */
    get source(): "gift_code";
    /** User for which the gift code was created */
    get user(): User;
}

/** This object contains information about a chat boost. */
declare class ChatBoost {
    payload: TelegramObjects.TelegramChatBoost;
    constructor(payload: TelegramObjects.TelegramChatBoost);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier of the boost */
    get id(): string;
    /** Point in time (Unix timestamp) when the chat was boosted */
    get addDate(): number;
    /** Point in time (Unix timestamp) when the boost will automatically expire, unless the booster's Telegram Premium subscription is prolonged */
    get expirationDate(): number;
    /** Source of the added boost */
    get source(): ChatBoostSourcePremium | ChatBoostSourceGiftCode | ChatBoostSourceGiveaway;
}

/** This object represents a boost added to a chat or changed. */
declare class ChatBoostRemoved {
    payload: TelegramObjects.TelegramChatBoostRemoved;
    constructor(payload: TelegramObjects.TelegramChatBoostRemoved);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Chat which was boosted */
    get chat(): Chat;
    /** Unique identifier of the boost */
    get id(): string;
    /** Point in time (Unix timestamp) when the boost was removed */
    get removeDate(): number;
    /** Source of the removed boost */
    get source(): ChatBoostSourcePremium | ChatBoostSourceGiftCode | ChatBoostSourceGiveaway;
}

/** This object represents a boost added to a chat or changed. */
declare class ChatBoostUpdated {
    payload: TelegramObjects.TelegramChatBoostUpdated;
    constructor(payload: TelegramObjects.TelegramChatBoostUpdated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Chat which was boosted */
    get chat(): Chat;
    /** Information about the chat boost */
    get boost(): ChatBoost;
}

/** Represents a location to which a chat is connected. */
declare class ChatLocation {
    payload: TelegramObjects.TelegramChatLocation;
    constructor(payload: TelegramObjects.TelegramChatLocation);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The location to which the supergroup is connected. Can't be a live location. */
    get location(): Location;
    /** Location address; `1-64` characters, as defined by the chat owner */
    get address(): string;
}

/**
 * Describes actions that a non-administrator user is allowed to take in a chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatpermissions)
 */
declare class ChatPermissions {
    payload: TelegramObjects.TelegramChatPermissions;
    constructor(payload: TelegramObjects.TelegramChatPermissions);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * *Optional*. *True*, if the user is allowed to send text messages, contacts, giveaways, giveaway winners, invoices, locations and venues
     */
    get canSendMessages(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send audios
     */
    get canSendAudios(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send documents
     */
    get canSendDocuments(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send photos
     */
    get canSendPhotos(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send videos
     */
    get canSendVideos(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send video notes
     */
    get canSendVideoNotes(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send voice notes
     */
    get canSendVoiceNotes(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send polls
     */
    get canSendPolls(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to send animations, games, stickers and use inline bots
     */
    get canSendOtherMessages(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to add web page previews to their messages
     */
    get canAddWebPagePreviews(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to change the chat title, photo and other settings. Ignored in public supergroups
     */
    get canChangeInfo(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to invite new users to the chat
     */
    get canInviteUsers(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to pin messages. Ignored in public supergroups
     */
    get canPinMessages(): boolean | undefined;
    /**
     * *Optional*. *True*, if the user is allowed to create forum topics. If omitted defaults to the value of can\_pin\_messages
     */
    get canManageTopics(): boolean | undefined;
    /** *Optional*. *True*, if the user is allowed to react to messages. If omitted, defaults to the value of `can_send_messages`. */
    get canReactToMessages(): boolean | undefined;
    /** *Optional*. *True*, if the user is allowed to edit their own tag. If omitted, defaults to the value of `can_pin_messages`. */
    get canEditTag(): boolean | undefined;
}

/** This object represents a chat photo. */
declare class ChatPhoto {
    payload: TelegramObjects.TelegramChatPhoto;
    constructor(payload: TelegramObjects.TelegramChatPhoto);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * File identifier of small (`160x160`) chat photo.
     * This `file_id` can be used only for photo download and only for as long
     * as the photo is not changed.
     */
    get smallFileId(): string;
    /**
     * Unique file identifier of small (`160x160`) chat photo, which is supposed
     * to be the same over time and for different bots. Can't be used to download
     * or reuse the file.
     */
    get smallFileUniqueId(): string;
    /**
     * File identifier of big (`640x640`) chat photo. This `file_id` can be used
     * only for photo download and only for as long as the photo is not changed.
     */
    get bigFileId(): string;
    /**
     * Unique file identifier of big (`640x640`) chat photo, which is supposed
     * to be the same over time and for different bots. Can't be used to
     * download or reuse the file.
     */
    get bigFileUniqueId(): string;
}

/**
 * This object describes the rating of a user based on their Telegram Star spendings.
 *
 * [Documentation](https://core.telegram.org/bots/api/#userrating)
 */
declare class UserRating {
    payload: TelegramObjects.TelegramUserRating;
    constructor(payload: TelegramObjects.TelegramUserRating);
    get [Symbol.toStringTag](): string;
    /**
     * Current level of the user, indicating their reliability when purchasing digital goods and services
     */
    get level(): number;
    /**
     * Numerical value of the user's rating; the higher the rating, the better
     */
    get rating(): number;
    /**
     * The rating value required to get the current level
     */
    get currentLevelRating(): number;
    /**
     * *Optional*. The rating value required to get to the next level; omitted if the maximum level was reached
     */
    get nextLevelRating(): number | undefined;
}

/**
 * This object contains full information about a chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatfullinfo)
 */
declare class ChatFullInfo {
    payload: TelegramObjects.TelegramChatFullInfo;
    constructor(payload: TelegramObjects.TelegramChatFullInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Unique identifier for this chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.
     */
    get id(): number;
    /**
     * Type of the chat, can be either “private”, “group”, “supergroup” or “channel”
     */
    get type(): TelegramObjects.TelegramChatFullInfoType;
    /**
     * *Optional*. Title, for supergroups, channels and group chats
     */
    get title(): string | undefined;
    /**
     * *Optional*. Username, for private chats, supergroups and channels if available
     */
    get username(): string | undefined;
    /**
     * *Optional*. First name of the other party in a private chat
     */
    get firstName(): string | undefined;
    /**
     * *Optional*. Last name of the other party in a private chat
     */
    get lastName(): string | undefined;
    /**
     * *Optional*. *True*, if the supergroup chat is a forum (has [topics](https://telegram.org/blog/topics-in-groups-collectible-usernames#topics-in-groups) enabled)
     */
    get isForum(): true | undefined;
    /**
     * *Optional*. *True*, if the chat is the direct messages chat of a channel
     */
    get isDirectMessages(): true | undefined;
    /**
     * Identifier of the accent color for the chat name and backgrounds of the chat photo, reply header, and link preview. See [accent colors](https://core.telegram.org/bots/api/#accent-colors) for more details.
     */
    get accentColorId(): number;
    /**
     * The maximum number of reactions that can be set on a message in the chat
     */
    get maxReactionCount(): number;
    /**
     * *Optional*. Chat photo
     */
    get photo(): ChatPhoto | undefined;
    /**
     * *Optional*. If non-empty, the list of all [active chat usernames](https://telegram.org/blog/topics-in-groups-collectible-usernames#collectible-usernames); for private chats, supergroups and channels
     */
    get activeUsernames(): string[] | undefined;
    /**
     * *Optional*. For private chats, the date of birth of the user
     */
    get birthdate(): Birthdate | undefined;
    /**
     * *Optional*. For private chats with business accounts, the intro of the business
     */
    get businessIntro(): BusinessIntro | undefined;
    /**
     * *Optional*. For private chats with business accounts, the location of the business
     */
    get businessLocation(): BusinessLocation | undefined;
    /**
     * *Optional*. For private chats with business accounts, the opening hours of the business
     */
    get businessOpeningHours(): BusinessOpeningHours | undefined;
    /**
     * *Optional*. For private chats, the personal channel of the user
     */
    get personalChat(): Chat | undefined;
    /**
     * *Optional*. Information about the corresponding channel chat; for direct messages chats only
     */
    get parentChat(): Chat | undefined;
    /**
     * *Optional*. List of available reactions allowed in the chat. If omitted, then all [emoji reactions](https://core.telegram.org/bots/api/#reactiontypeemoji) are allowed.
     */
    get availableReactions(): TelegramObjects.TelegramReactionType[] | undefined;
    /**
     * *Optional*. Custom emoji identifier of the emoji chosen by the chat for the reply header and link preview background
     */
    get backgroundCustomEmojiId(): string | undefined;
    /**
     * *Optional*. Identifier of the accent color for the chat's profile background. See [profile accent colors](https://core.telegram.org/bots/api/#profile-accent-colors) for more details.
     */
    get profileAccentColorId(): number | undefined;
    /**
     * *Optional*. Custom emoji identifier of the emoji chosen by the chat for its profile background
     */
    get profileBackgroundCustomEmojiId(): string | undefined;
    /**
     * *Optional*. Custom emoji identifier of the emoji status of the chat or the other party in a private chat
     */
    get emojiStatusCustomEmojiId(): string | undefined;
    /**
     * *Optional*. Expiration date of the emoji status of the chat or the other party in a private chat, in Unix time, if any
     */
    get emojiStatusExpirationDate(): number | undefined;
    /**
     * *Optional*. Bio of the other party in a private chat
     */
    get bio(): string | undefined;
    /**
     * *Optional*. *True*, if privacy settings of the other party in the private chat allows to use `tg://user?id=<user_id>` links only in chats with the user
     */
    get hasPrivateForwards(): true | undefined;
    /**
     * *Optional*. *True*, if the privacy settings of the other party restrict sending voice and video note messages in the private chat
     */
    get hasRestrictedVoiceAndVideoMessages(): true | undefined;
    /**
     * *Optional*. *True*, if users need to join the supergroup before they can send messages
     */
    get joinToSendMessages(): true | undefined;
    /**
     * *Optional*. *True*, if all users directly joining the supergroup need to be approved by supergroup administrators
     */
    get joinByRequest(): true | undefined;
    /**
     * *Optional*. Description, for groups, supergroups and channel chats
     */
    get description(): string | undefined;
    /**
     * *Optional*. Primary invite link, for groups, supergroups and channel chats
     */
    get inviteLink(): string | undefined;
    /**
     * *Optional*. The most recent pinned message (by sending date)
     */
    get pinnedMessage(): Message | undefined;
    /**
     * *Optional*. Default chat member permissions, for groups and supergroups
     */
    get permissions(): ChatPermissions | undefined;
    /**
     * *Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds
     */
    get slowModeDelay(): number | undefined;
    /**
     * *Optional*. For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions
     */
    get unrestrictBoostCount(): number | undefined;
    /**
     * *Optional*. The time after which all messages sent to the chat will be automatically deleted; in seconds
     */
    get messageAutoDeleteTime(): number | undefined;
    /**
     * *Optional*. *True*, if aggressive anti-spam checks are enabled in the supergroup. The field is only available to chat administrators.
     */
    get hasAggressiveAntiSpamEnabled(): true | undefined;
    /**
     * *Optional*. *True*, if non-administrators can only get the list of bots and administrators in the chat
     */
    get hasHiddenMembers(): true | undefined;
    /**
     * *Optional*. *True*, if messages from the chat can't be forwarded to other chats
     */
    get hasProtectedContent(): true | undefined;
    /**
     * *Optional*. *True*, if new chat members will have access to old messages; available only to chat administrators
     */
    get hasVisibleHistory(): true | undefined;
    /**
     * *Optional*. For supergroups, name of the group sticker set
     */
    get stickerSetName(): string | undefined;
    /**
     * *Optional*. *True*, if the bot can change the group sticker set
     */
    get canSendPaidMedia(): true | undefined;
    /**
     * *Optional*. *True*, if the bot can change the group sticker set
     */
    get canSetStickerSet(): true | undefined;
    get canSendGift(): boolean;
    get acceptedGiftTypes(): AcceptedGiftTypes;
    /**
     * *Optional*. For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group.
     */
    get customEmojiStickerSetName(): string | undefined;
    /**
     * *Optional*. Unique identifier for the linked chat, i.e. the discussion group identifier for a channel and vice versa; for supergroups and channel chats. This identifier may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier.
     */
    get linkedChatId(): number | undefined;
    /**
     * *Optional*. For supergroups, the location to which the supergroup is connected
     */
    get location(): ChatLocation | undefined;
    /**
     * *Optional*. For private chats, the rating of the user if any
     */
    get rating(): UserRating | undefined;
    /**
     * *Optional*. For private chats, the first audio added to the profile of the user
     */
    get firstProfileAudio(): AudioAttachment | undefined;
    /**
     * *Optional*. The color scheme based on a unique gift that must be used for the chat's name, message replies and link previews
     */
    get uniqueGiftColors(): UniqueGiftColors | undefined;
    /**
     * *Optional*. The number of Telegram Stars a general user have to pay to send a message to the chat
     */
    get paidMessageStarCount(): number | undefined;
}

/** Represents an invite link for a chat. */
declare class ChatInviteLink {
    payload: TelegramObjects.TelegramChatInviteLink;
    constructor(payload: TelegramObjects.TelegramChatInviteLink);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * The invite link. If the link was created by another chat administrator,
     * then the second part of the link will be replaced with `…`.
     */
    get link(): string;
    /** Creator of the link */
    get creator(): User;
    /** Invite link name */
    get name(): string | undefined;
    /** `true`, if the link is primary */
    isPrimary(): boolean;
    /** `true`, if the link is revoked */
    isRevoked(): boolean;
    /** Point in time (Unix timestamp) when the link will expire or has been expired */
    get expireDate(): number | undefined;
    /**
     * Maximum number of users that can be members of the chat simultaneously
     * after joining the chat via this invite link;
     * `1-99999`
     */
    get memberLimit(): number | undefined;
    /** `true`, if users joining the chat via the link need to be approved by chat administrators */
    get createsJoinRequest(): boolean;
    /** Number of pending join requests created using this link */
    get pendingJoinRequestCount(): number | undefined;
}

/** Represents a join request sent to a chat. */
declare class ChatJoinRequest {
    payload: TelegramObjects.TelegramChatJoinRequest;
    constructor(payload: TelegramObjects.TelegramChatJoinRequest);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Chat to which the request was sent */
    get chat(): Chat;
    /** User that sent the join request */
    get from(): User;
    /** Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user. */
    get userChatId(): number;
    /** Date the request was sent in Unix time */
    get date(): number;
    /** Bio of the user */
    get bio(): string | undefined;
    /** Chat invite link that was used by the user to send the join request */
    get inviteLink(): ChatInviteLink | undefined;
}

/**
 * This object contains information about one member of a chat. Currently, the following 6 types of chat members are supported:
 * - `ChatMemberOwner`
 * - `ChatMemberAdministrator`
 * - `ChatMemberMember`
 * - `ChatMemberRestricted`
 * - `ChatMemberLeft`
 * - `ChatMemberBanned`
 */
declare class ChatMember {
    payload: JoinUnion<TelegramObjects.TelegramChatMember>;
    constructor(payload: JoinUnion<TelegramObjects.TelegramChatMember>);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Information about the user */
    get user(): User;
    /** The member's status in the chat */
    get status(): "creator" | "administrator" | "member" | "restricted" | "left" | "kicked";
    /** Owner and administrators only. Custom title for this user */
    get customTitle(): string | undefined;
    /** Owner and administrators only. `true`, if the user's presence in the chat is hidden */
    isAnonymous(): boolean | undefined;
    /**
     * Restricted and kicked only.
     * Date when restrictions will be lifted for this user;
     * unix time
     */
    get untilDate(): number | undefined;
    /**
     * Administrators only.
     * `true`, if the bot is allowed to edit administrator privileges of that
     * user
     */
    canBeEdited(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can access the chat event log, chat statistics,
     * message statistics in channels, see channel members, see anonymous administrators
     * in supergroups and ignore slow mode.
     * Implied by any other administrator privilege
     */
    canManageChat(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can post in the channel;
     * channels only
     */
    canPostMessages(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can edit messages of other users
     * and can pin messages; channels only
     */
    canEditMessages(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can delete messages of other users
     */
    canDeleteMessages(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can manage video chats
     */
    canManageVideoChats(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can restrict, ban or unban chat members
     */
    canRestrictMembers(): boolean | undefined;
    /**
     * Administrators only.
     * `true`, if the administrator can add new administrators with a subset o
     * their own privileges or demote administrators that he has promoted,
     * directly or indirectly (promoted by administrators that were appointed by
     * the user)
     */
    canPromoteMembers(): boolean | undefined;
    /**
     * Administrators and restricted only.
     * `true`, if the user is allowed to change the chat title,
     * photo and other settings
     */
    canChangeInfo(): boolean | undefined;
    /**
     * Administrators and restricted only.
     * `true`, if the user is allowed to invite new users to the chat
     */
    canInviteUsers(): boolean | undefined;
    /**
     * Administrators and restricted only.
     * `true`, if the user is allowed to pin messages;
     * groups and supergroups only
     */
    canPinMessages(): boolean | undefined;
    /** `true`, if the administrator can post stories in the channel; channels only */
    canPostStories(): any;
    /** `true`, if the administrator can edit stories posted by other users; channels only */
    canEditStories(): any;
    /** `true`, if the administrator can delete stories posted by other users; channels only */
    canDeleteStories(): any;
    /** `true`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only */
    canManageTopics(): boolean | undefined;
    /** `true`, if the administrator can manage direct messages of the channel and decline suggested posts; channels only */
    canManageDirectMessages(): boolean | undefined;
    /** `true`, if the administrator can edit the tags of regular members; for groups and supergroups only */
    canManageTags(): boolean | undefined;
    /** Tag of the member; for members and restricted members */
    get tag(): string | undefined;
    /** `true`, if the user is allowed to edit their own tag; for restricted members */
    canEditTag(): boolean | undefined;
    /**
     * Restricted only.
     * `true`, if the user is a member of the chat at the moment of the request
     */
    isMember(): boolean | undefined;
    /**
     * Restricted only.
     * `true`, if the user is allowed to send text messages,
     * contacts, locations and venues
     */
    canSendMessages(): boolean | undefined;
    /** `true`, if the user is allowed to send audios */
    canSendAudios(): boolean | undefined;
    /** `true`, if the user is allowed to send documents */
    canSendDocuments(): boolean | undefined;
    /** `true`, if the user is allowed to send photos */
    canSendPhotos(): boolean | undefined;
    /** `true`, if the user is allowed to send videos */
    canSendVideos(): boolean | undefined;
    /** `true`, if the user is allowed to send video notes */
    canSendVideoNotes(): boolean | undefined;
    /** `true`, if the user is allowed to send voice notes */
    canSendVoiceNotes(): boolean | undefined;
    /** Restricted only. `true`, if the user is allowed to send polls */
    canSendPolls(): boolean | undefined;
    /**
     * Restricted only.
     * `true`, if the user is allowed to send animations, games,
     * stickers and use inline bots
     */
    canSendOtherMessages(): boolean | undefined;
    /**
     * Restricted only
     * `true`, if the user is allowed to add web page previews to their messages
     */
    canAddWebPagePreviews(): boolean | undefined;
    /** Restricted only. `true`, if the user is allowed to react to messages */
    canReactToMessages(): boolean | undefined;
}

/**
 * This object represents changes in the status of a chat member.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatmemberupdated)
 */
declare class ChatMemberUpdated {
    payload: TelegramObjects.TelegramChatMemberUpdated;
    constructor(payload: TelegramObjects.TelegramChatMemberUpdated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Chat the user belongs to
     */
    get chat(): Chat;
    /**
     * Performer of the action, which resulted in the change
     */
    get from(): User;
    /**
     * Date the change was done in Unix time
     */
    get date(): number;
    /**
     * Previous information about the chat member
     */
    get oldChatMember(): ChatMember;
    /**
     * New information about the chat member
     */
    get newChatMember(): ChatMember;
    /**
     * *Optional*. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.
     */
    get inviteLink(): ChatInviteLink | undefined;
    /**
     * *Optional*. True, if the user joined the chat after sending a direct join request and being approved by an administrator
     */
    get viaJoinRequest(): boolean | undefined;
    /**
     * *Optional*. True, if the user joined the chat via a chat folder invite link
     */
    get viaChatFolderInviteLink(): boolean | undefined;
}

/** Represents a result of an inline query that was chosen by the user and sent to their chat partner. */
declare class ChosenInlineResult {
    payload: TelegramObjects.TelegramChosenInlineResult;
    constructor(payload: TelegramObjects.TelegramChosenInlineResult);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The unique identifier for the result that was chosen */
    get resultId(): string;
    /** The user that chose the result */
    get from(): User;
    /** Sender ID */
    get senderId(): number;
    /** Sender location, only for bots that require user location */
    get location(): Location | undefined;
    /**
     * 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.
     */
    get inlineMessageId(): string | undefined;
    /** The query that was used to obtain the result */
    get query(): string;
}

/**
 * This object represents an incoming inline query.
 * When the user sends an empty query, your bot could return some default or
 * trending results.
 */
declare class InlineQuery {
    payload: TelegramObjects.TelegramInlineQuery;
    constructor(payload: TelegramObjects.TelegramInlineQuery);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique identifier for this query */
    get id(): string;
    /** Sender */
    get from(): User;
    /** Sender location, only for bots that request user location */
    get location(): Location | undefined;
    /** Text of the query (up to 256 characters) */
    get query(): string;
    /** Offset of the results to be returned, can be controlled by the bot */
    get offset(): string;
}

/**
 * Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use *input\_message\_content* to send a message with the specified content instead of the location.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inlinequeryresultlocation)
 */
declare class InlineQueryResultLocation {
    payload: TelegramObjects.TelegramInlineQueryResultLocation;
    constructor(payload: TelegramObjects.TelegramInlineQueryResultLocation);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Type of the result, must be *location*
     */
    get type(): "location";
    /**
     * Unique identifier for this result, 1-64 Bytes
     */
    get id(): string;
    /**
     * Location latitude in degrees
     */
    get latitude(): number;
    /**
     * Location longitude in degrees
     */
    get longitude(): number;
    /**
     * Location title
     */
    get title(): string;
    /**
     * *Optional*. The radius of uncertainty for the location, measured in meters; 0-1500
     */
    get horizontalAccuracy(): number | undefined;
    /**
     * *Optional*. Period in seconds during which the location can be updated, should be between 60 and 86400, or 0x7FFFFFFF for live locations that can be edited indefinitely.
     */
    get livePeriod(): number | undefined;
    /**
     * *Optional*. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.
     */
    get heading(): number | undefined;
    /**
     * *Optional*. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.
     */
    get proximityAlertRadius(): number | undefined;
    /**
     * *Optional*. [Inline keyboard](https://core.telegram.org/bots/features#inline-keyboards) attached to the message
     */
    get replyMarkup(): InlineKeyboardMarkup | undefined;
    /**
     * *Optional*. Content of the message to be sent instead of the location
     */
    get inputMessageContent(): TelegramObjects.TelegramInputMessageContent | undefined;
    /**
     * *Optional*. Url of the thumbnail for the result
     */
    get thumbnailUrl(): string | undefined;
    /**
     * *Optional*. Thumbnail width
     */
    get thumbnailWidth(): number | undefined;
    /**
     * *Optional*. Thumbnail height
     */
    get thumbnailHeight(): number | undefined;
}

/**
 * Describes a task to add to a checklist.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inputchecklisttask)
 */
declare class InputChecklistTask {
    payload: TelegramObjects.TelegramInputChecklistTask;
    constructor(payload: TelegramObjects.TelegramInputChecklistTask);
    get [Symbol.toStringTag](): string;
    /**
     * Unique identifier of the task; must be positive and unique among all task identifiers currently present in the checklist
     */
    get id(): number;
    /**
     * Text of the task; 1-100 characters after entities parsing
     */
    get text(): string | {
        toString(): string;
    };
    /**
     * Optional. Mode for parsing entities in the text. See [formatting options](https://core.telegram.org/bots/api#formatting-options) for more details.
     */
    get parseMode(): "HTML" | "MarkdownV2" | "Markdown" | undefined;
    /**
     * *Optional*. List of special entities that appear in the text, which can be specified instead of parse\_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom\_emoji* entities are allowed.
     */
    get textEntities(): MessageEntity[] | undefined;
}

/**
 * Describes a checklist to create.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inputchecklist)
 */
declare class InputChecklist {
    payload: TelegramObjects.TelegramInputChecklist;
    constructor(payload: TelegramObjects.TelegramInputChecklist);
    get [Symbol.toStringTag](): string;
    /**
     * Title of the checklist; 1-255 characters after entities parsing
     */
    get title(): string | {
        toString(): string;
    };
    /**
     * Optional. Mode for parsing entities in the title. See [formatting options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     */
    get parseMode(): "HTML" | "MarkdownV2" | "Markdown" | undefined;
    /**
     * *Optional*. List of special entities that appear in the title, which can be specified instead of parse\_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom\_emoji* entities are allowed.
     */
    get titleEntities(): MessageEntity[] | undefined;
    /**
     * List of 1-30 tasks in the checklist
     */
    get tasks(): InputChecklistTask[];
    /**
     * *Optional*. Pass *True* if other users can add tasks to the checklist
     */
    get othersCanAddTasks(): boolean | undefined;
    /**
     * *Optional*. Pass *True* if other users can mark tasks as done or not done in the checklist
     */
    get othersCanMarkTasksAsDone(): boolean | undefined;
}

/**
 * Represents the [content](https://core.telegram.org/bots/api/#inputmessagecontent) of a location message to be sent as the result of an inline query.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inputlocationmessagecontent)
 */
declare class InputLocationMessageContent {
    payload: TelegramObjects.TelegramInputLocationMessageContent;
    constructor(payload: TelegramObjects.TelegramInputLocationMessageContent);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Latitude of the location in degrees
     */
    get latitude(): number;
    /**
     * Longitude of the location in degrees
     */
    get longitude(): number;
    /**
     * *Optional*. The radius of uncertainty for the location, measured in meters; 0-1500
     */
    get horizontalAccuracy(): number | undefined;
    /**
     * *Optional*. Period in seconds during which the location can be updated, should be between 60 and 86400, or 0x7FFFFFFF for live locations that can be edited indefinitely.
     */
    get livePeriod(): number | undefined;
    /**
     * *Optional*. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.
     */
    get heading(): number | undefined;
    /**
     * *Optional*. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.
     */
    get proximityAlertRadius(): number | undefined;
}

/**
 * This object contains information about one answer option in a poll to send.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inputpolloption)
 */
declare class InputPollOption {
    payload: TelegramObjects.TelegramInputPollOption;
    constructor(payload: TelegramObjects.TelegramInputPollOption);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Option text, 1-100 characters
     */
    get text(): string | {
        toString(): string;
    };
    /**
     * *Optional*. Mode for parsing entities in the text. See [formatting options](https://core.telegram.org/bots/api/#formatting-options) for more details. Currently, only custom emoji entities are allowed
     */
    get textParseMode(): "HTML" | "MarkdownV2" | "Markdown" | undefined;
    /**
     * *Optional*. A JSON-serialized list of special entities that appear in the poll option text. It can be specified instead of *text\_parse\_mode*
     */
    get textEntities(): TelegramObjects.TelegramMessageEntity[] | undefined;
}

/**
 * This object contains information about the creation or token update of a bot that is managed by the current bot.
 *
 * [Documentation](https://core.telegram.org/bots/api/#managedbotupdated)
 */
declare class ManagedBotUpdated {
    payload: TelegramObjects.TelegramManagedBotUpdated;
    constructor(payload: TelegramObjects.TelegramManagedBotUpdated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** User that created the bot */
    get user(): User;
    /**
     * Information about the bot. Token of the bot can be fetched using the method `getManagedBotToken`.
     */
    get bot(): User;
}

/** Contains information about a Web App. */
declare class WebAppInfo {
    payload: TelegramObjects.TelegramWebAppInfo;
    constructor(payload: TelegramObjects.TelegramWebAppInfo);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps */
    get url(): string;
}

/** This object describes the bot's menu button in a private chat. */
declare class MenuButton {
    payload: JoinUnion<TelegramObjects.TelegramMenuButton>;
    constructor(payload: JoinUnion<TelegramObjects.TelegramMenuButton>);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Type of the button */
    get type(): "commands" | "web_app" | "default";
    /** Text on the button */
    get text(): any;
    /**
     * Description of the Web App that will be launched when the user presses the button.
     * The Web App will be able to send an arbitrary message on behalf of the user
     * using the method `answerWebAppQuery`.
     */
    get webApp(): WebAppInfo | undefined;
}

/** This object represents a unique message identifier. */
declare class MessageId {
    payload: TelegramObjects.TelegramMessageId;
    constructor(payload: TelegramObjects.TelegramMessageId);
    /** Unique message identifier */
    get id(): number;
}

/**
 * The reaction is based on a custom emoji.
 *
 * [Documentation](https://core.telegram.org/bots/api/#reactiontypecustomemoji)
 */
declare class ReactionTypeCustomEmoji extends ReactionType {
    payload: TelegramObjects.TelegramReactionTypeCustomEmoji;
    constructor(payload: TelegramObjects.TelegramReactionTypeCustomEmoji);
    /** Type of the reaction, always `custom_emoji` */
    get type(): "custom_emoji";
    /** Custom emoji identifier */
    get customEmoji(): string;
}

/**
 * The reaction is based on an emoji.
 *
 * [Documentation](https://core.telegram.org/bots/api/#reactiontypeemoji)
 */
declare class ReactionTypeEmoji extends ReactionType {
    payload: TelegramObjects.TelegramReactionTypeEmoji;
    constructor(payload: TelegramObjects.TelegramReactionTypeEmoji);
    /** Type of the reaction, always `emoji` */
    get type(): "emoji";
    /** Reaction emoji. Currently, it can be one of "👍", "👎", "❤", "🔥", "🥰", "👏", "😁", "🤔", "🤯", "😱", "🤬", "😢", "🎉", "🤩", "🤮", "💩", "🙏", "👌", "🕊", "🤡", "🥱", "🥴", "😍", "🐳", "❤‍🔥", "🌚", "🌭", "💯", "🤣", "⚡", "🍌", "🏆", "💔", "🤨", "😐", "🍓", "🍾", "💋", "🖕", "😈", "😴", "😭", "🤓", "👻", "👨‍💻", "👀", "🎃", "🙈", "😇", "😨", "🤝", "✍", "🤗", "🫡", "🎅", "🎄", "☃", "💅", "🤪", "🗿", "🆒", "💘", "🙉", "🦄", "😘", "💊", "🙊", "😎", "👾", "🤷‍♂", "🤷", "🤷‍♀", "😡" */
    get emoji(): TelegramObjects.TelegramReactionTypeEmojiEmoji;
}

/**
 * The reaction is paid.
 *
 * [Documentation](https://core.telegram.org/bots/api#reactiontypepaid)
 */
declare class ReactionTypePaid extends ReactionType {
    payload: TelegramObjects.TelegramReactionTypePaid;
    constructor(payload: TelegramObjects.TelegramReactionTypePaid);
    /** Type of the reaction, always `emoji` */
    get type(): "paid";
}

interface ReactionTypeMapping {
    emoji: ReactionTypeEmoji;
    custom_emoji: ReactionTypeCustomEmoji;
    paid: ReactionTypePaid;
}
declare class ReactionType {
    payload: TelegramObjects.TelegramReactionType;
    constructor(payload: TelegramObjects.TelegramReactionType);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Is this reaction type the same as the `type`? */
    is<T extends TelegramObjects.TelegramReactionType["type"]>(type: T): this is ReactionTypeMapping[T];
}

/** This object represents reaction changes on a message with anonymous reactions. */
declare class MessageReactionCountUpdated {
    payload: TelegramObjects.TelegramMessageReactionCountUpdated;
    constructor(payload: TelegramObjects.TelegramMessageReactionCountUpdated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The chat containing the message the user reacted to */
    get chat(): Chat;
    /** Unique identifier of the message inside the chat */
    get id(): number;
    /** Date of the change in Unix time */
    get date(): number;
    /** List of reactions that are present on the message */
    get reactions(): ReactionType[];
}

/** This object represents a change of a reaction on a message performed by a user. */
declare class MessageReactionUpdated {
    payload: TelegramObjects.TelegramMessageReactionUpdated;
    constructor(payload: TelegramObjects.TelegramMessageReactionUpdated);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** The chat containing the message the user reacted to */
    get chat(): Chat;
    /** Unique identifier of the message inside the chat */
    get id(): number;
    /** The user that changed the reaction, if the user isn't anonymous */
    get user(): User | undefined;
    /** The chat on behalf of which the reaction was changed, if the user is anonymous */
    get actorChat(): Chat | undefined;
    /** Date of the change in Unix time */
    get date(): number;
    /** Previous list of reaction types that were set by the user */
    get oldReactions(): TelegramObjects.TelegramReactionType[];
    /** New list of reaction types that have been set by the user */
    get newReactions(): TelegramObjects.TelegramReactionType[];
}

/**
 * This object describes paid media. Currently, it can be one of
 *
 * * [PaidMediaLivePhoto](https://core.telegram.org/bots/api/#paidmedialivephoto)
 * * [PaidMediaPhoto](https://core.telegram.org/bots/api/#paidmediaphoto)
 * * [PaidMediaPreview](https://core.telegram.org/bots/api/#paidmediapreview)
 * * [PaidMediaVideo](https://core.telegram.org/bots/api/#paidmediavideo)
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmedia)
 */
declare const paidMediaMap: {
    live_photo: typeof PaidMediaLivePhoto;
    preview: typeof PaidMediaPreview;
    video: typeof PaidMediaVideo;
    photo: typeof PaidMediaPhoto;
};

/** This object represents an answer of a user in a non-anonymous poll. */
declare class PollAnswer {
    payload: TelegramObjects.TelegramPollAnswer;
    constructor(payload: TelegramObjects.TelegramPollAnswer);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique poll identifier */
    get pollId(): string;
    /** The chat that changed the answer to the poll, if the voter is anonymous */
    get voterChat(): Chat | undefined;
    /** The user, who changed the answer to the poll */
    get user(): User | undefined;
    /** Sender ID. Since `user` and `voterChat` are mutually exclusive, this field will either contain `user.id` or `voterChat.id` as a shortcut =) */
    get senderId(): number;
    /**
     * 0-based identifiers of answer options, chosen by the user.
     * May be empty if the user retracted their vote.
     */
    get optionIds(): number[];
    /**
     * Persistent identifiers of the chosen answer options.
     * May be empty if the vote was retracted.
     */
    get optionPersistentIds(): string[];
}

/** This object contains information about an incoming pre-checkout query. */
declare class PreCheckoutQuery {
    payload: TelegramObjects.TelegramPreCheckoutQuery;
    constructor(payload: TelegramObjects.TelegramPreCheckoutQuery);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique query identifier */
    get id(): string;
    /** User who sent the query */
    get from(): User;
    /** Sender ID */
    get senderId(): number;
    /** Three-letter ISO 4217 currency code */
    get currency(): TelegramObjects.TelegramCurrencies;
    /**
     * 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
     * [currencies.json](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).
     */
    get totalAmount(): number;
    /** Bot specified invoice payload */
    get invoicePayload(): string;
    /** Identifier of the shipping option chosen by the user */
    get shippingOptionId(): string | undefined;
    /** Order info provided by the user */
    get orderInfo(): OrderInfo | undefined;
}

/** Represents a reaction added to a message along with the number of times it was added. */
declare class ReactionCount {
    payload: TelegramObjects.TelegramReactionCount;
    constructor(payload: TelegramObjects.TelegramReactionCount);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Type of the reaction */
    get type(): ReactionTypeEmoji | ReactionTypeCustomEmoji;
    /** Number of times the reaction was added */
    get totalCount(): number;
}

/**
 * This object contains basic information about a refunded payment.
 *
 * [Documentation](https://core.telegram.org/bots/api/#refundedpayment)
 */
declare class RefundedPayment {
    payload: TelegramObjects.TelegramRefundedPayment;
    constructor(payload: TelegramObjects.TelegramRefundedPayment);
    get [Symbol.toStringTag](): string;
    /**
     * Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code, or “XTR” for payments in [Telegram Stars](https://t.me/BotNews/90). Currently, always “XTR”
     */
    get currency(): TelegramObjects.TelegramCurrencies;
    /**
     * Total refunded price in the *smallest units* of the currency (integer, **not** float/double). For example, for a price of `US$ 1.45`, `total_amount = 145`. See the *exp* parameter in [currencies.json](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).
     */
    get totalAmount(): number;
    /**
     * Bot-specified invoice payload
     */
    get invoicePayload(): string;
    /**
     * Telegram payment identifier
     */
    get telegramPaymentChargeId(): string;
    /**
     * *Optional*. Provider payment identifier
     */
    get providerPaymentChargeId(): string | undefined;
}

/** Describes an inline message sent by a guest bot. */
declare class SentGuestMessage {
    payload: TelegramObjects.TelegramSentGuestMessage;
    constructor(payload: TelegramObjects.TelegramSentGuestMessage);
    get [Symbol.toStringTag](): string;
    /** Identifier of the sent inline message */
    get inlineMessageId(): string;
}

/** Contains information about an inline message sent by a Web App on behalf of a user. */
declare class SentWebAppMessage {
    payload: TelegramObjects.TelegramSentWebAppMessage;
    constructor(payload: TelegramObjects.TelegramSentWebAppMessage);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Identifier of the sent inline message.
     *
     * Available only if there is an inline keyboard attached to the message.
     */
    get inlineMessageId(): string | undefined;
}

/** This object contains information about an incoming shipping query. */
declare class ShippingQuery {
    payload: TelegramObjects.TelegramShippingQuery;
    constructor(payload: TelegramObjects.TelegramShippingQuery);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Unique query identifier */
    get id(): string;
    /** User who sent the query */
    get from(): User;
    /** Sender ID */
    get senderId(): number;
    /** Bot specified invoice payload */
    get invoicePayload(): string;
    /** User specified shipping address */
    get shippingAddress(): ShippingAddress;
}

/** This object represents a sticker set. */
declare class StickerSet {
    payload: TelegramObjects.TelegramStickerSet;
    constructor(payload: TelegramObjects.TelegramStickerSet);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Sticker set name */
    get name(): string;
    /** Sticker set title */
    get title(): string;
    /** Type of stickers in the set, currently one of `regular`, `mask`, `custom_emoji` */
    get stickerType(): TelegramObjects.TelegramStickerSetStickerType;
    /** List of all set stickers */
    get stickers(): StickerAttachment[] | undefined;
    /** Sticker set thumbnail in the .WEBP or .TGS format */
    get thumbnail(): PhotoSize | undefined;
}

/**
 * Describes a service message about a regular gift that was sent or received.
 *
 * [Documentation](https://core.telegram.org/bots/api/#giftinfo)
 */
declare class UniqueGiftBackdropColors {
    payload: TelegramObjects.TelegramUniqueGiftBackdropColors;
    constructor(payload: TelegramObjects.TelegramUniqueGiftBackdropColors);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * The color in the center of the backdrop in RGB format
     */
    get centerColor(): number;
    /**
     * The color on the edges of the backdrop in RGB format
     */
    get edgeColor(): number;
    /**
     * The color to be applied to the symbol in RGB format
     */
    get symbolColor(): number;
    /**
     * The color for the text on the backdrop in RGB format
     */
    get textColor(): number;
}

/**
 * This object describes the colors of the backdrop of a unique gift.
 *
 * [Documentation](https://core.telegram.org/bots/api/#uniquegiftbackdropcolors)
 */
declare class UniqueGiftBackdrop {
    payload: TelegramObjects.TelegramUniqueGiftBackdrop;
    constructor(payload: TelegramObjects.TelegramUniqueGiftBackdrop);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Name of the backdrop
     */
    get name(): string;
    /**
     * Colors of the backdrop
     */
    get colors(): UniqueGiftBackdropColors;
    /**
     * The number of unique gifts that receive this model for every 1000 gifts upgraded
     */
    get rarityPerMille(): number;
}

/**
 * Describes a service message about a regular gift that was sent or received.
 *
 * [Documentation](https://core.telegram.org/bots/api/#giftinfo)
 */
declare class UniqueGiftModel {
    payload: TelegramObjects.TelegramUniqueGiftModel;
    constructor(payload: TelegramObjects.TelegramUniqueGiftModel);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Name of the model
     */
    get name(): string;
    /**
     * The sticker that represents the unique gift
     */
    get sticker(): StickerAttachment;
    /**
     * The number of unique gifts that receive this model for every 1000 gifts upgraded
     */
    get rarityPerMille(): number;
    /**
     * *Optional*. Rarity of the model if it is a crafted model. Currently, can be "uncommon", "rare", "epic", or "legendary".
     */
    get rarity(): TelegramObjects.TelegramUniqueGiftModelRarity | undefined;
}

/**
 * Describes a service message about a regular gift that was sent or received.
 *
 * [Documentation](https://core.telegram.org/bots/api/#giftinfo)
 */
declare class UniqueGiftSymbol {
    payload: TelegramObjects.TelegramUniqueGiftSymbol;
    constructor(payload: TelegramObjects.TelegramUniqueGiftSymbol);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Name of the model
     */
    get name(): string;
    /**
     * The sticker that represents the unique gift
     */
    get sticker(): StickerAttachment;
    /**
     * The number of unique gifts that receive this model for every 1000 gifts upgraded
     */
    get rarityPerMille(): number;
}

/**
 * This object represents an incoming update.
 *
 * At most **one** of the optional parameters can be present in any given
 * update.
 */
declare class Update {
    payload: TelegramObjects.TelegramUpdate;
    constructor(payload: TelegramObjects.TelegramUpdate);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * 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. If there are no
     * new updates for at least a week, then identifier of the next update will
     * be chosen randomly instead of sequentially.
     */
    get id(): number;
    /**
     * New incoming message of any kind — text, photo, sticker, etc.
     */
    get message(): Message | undefined;
    /** New version of a message that is known to the bot and was edited */
    get editedMessage(): Message | undefined;
    /** New incoming channel post of any kind — text, photo, sticker, etc. */
    get channelPost(): Message | undefined;
    /** New version of a channel post that is known to the bot and was edited */
    get editedChannelPost(): Message | undefined;
    /** A reaction to a message was changed by a user. The bot must be an administrator in the chat and must explicitly specify `message_reaction` in the list of allowed_updates to receive these updates. The update isn't received for reactions set by bots. */
    get messageReaction(): MessageReactionUpdated | undefined;
    /** Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify `message_reaction_count` in the list of allowed_updates to receive these updates. */
    get messageReactionCount(): MessageReactionCountUpdated | undefined;
    /** New incoming inline query */
    get inlineQuery(): InlineQuery | undefined;
    /**
     * The result of an inline query that was chosen by a user and sent to their
     * chat partner. Please see our documentation on the feedback collecting for
     * details on how to enable these updates for your bot.
     */
    get chosenInlineResult(): ChosenInlineResult | undefined;
    /** New incoming callback query */
    get callbackQuery(): CallbackQuery | undefined;
    /** New incoming shipping query. Only for invoices with flexible price */
    get shippingQuery(): ShippingQuery | undefined;
    /**
     * New incoming pre-checkout query. Contains full information about checkout
     */
    get preCheckoutQuery(): PreCheckoutQuery | undefined;
    /**
     * New poll state. Bots receive only updates about stopped polls and polls,
     * which are sent by the bot
     */
    get poll(): Poll | undefined;
    /**
     * A user changed their answer in a non-anonymous poll. Bots receive new
     * votes only in polls that were sent by the bot itself.
     */
    get pollAnswer(): PollAnswer | undefined;
    /** The bot's chat member status was updated in a chat. For private chats, this update is received only when the bot is blocked or unblocked by the user. */
    get myChatMember(): ChatMemberUpdated | undefined;
    /**
     * A chat member's status was updated in a chat.
     *
     * The bot must be an administrator in the chat and must explicitly specify `chat_member` in the list of `allowed_updates` to receive these updates.
     */
    get chatMember(): ChatMemberUpdated | undefined;
    /** A request to join the chat has been sent. The bot must have the `can_invite_users` administrator right in the chat to receive these updates. */
    get chatJoinRequest(): ChatJoinRequest | undefined;
    /** A chat boost was added or changed. The bot must be an administrator in the chat to receive these updates. */
    get chatBoost(): ChatBoostUpdated | undefined;
    /** A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates. */
    get removedChatBoost(): ChatBoostRemoved | undefined;
}

/**
 * This object represents the audios displayed on a user's profile.
 *
 * [Documentation](https://core.telegram.org/bots/api/#userprofileaudios)
 */
declare class UserProfileAudios {
    payload: TelegramObjects.TelegramUserProfileAudios;
    constructor(payload: TelegramObjects.TelegramUserProfileAudios);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /**
     * Total number of profile audios for the target user
     */
    get totalCount(): number;
    /**
     * Requested profile audios
     */
    get audios(): AudioAttachment[];
}

/** This object represent a user's profile pictures. */
declare class UserProfilePhotos {
    payload: TelegramObjects.TelegramUserProfilePhotos;
    constructor(payload: TelegramObjects.TelegramUserProfilePhotos);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
    /** Total number of profile pictures the target user has */
    get totalCount(): number;
    /** Requested profile pictures (in up to 4 sizes each) */
    get photos(): PhotoSize[][] | undefined;
}

interface ContextOptions<Bot extends BotLike> {
    bot: Bot;
    update?: TelegramObjects.TelegramUpdate;
    updateType: UpdateName;
    updateId?: number;
}
/** Main base context */
declare class Context<Bot extends BotLike> {
    bot: Bot;
    updateId?: number;
    update?: TelegramObjects.TelegramUpdate;
    protected updateType: UpdateName;
    constructor(options: ContextOptions<Bot>);
    /** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) */
    get [Symbol.toStringTag](): string;
}
interface Context<Bot extends BotLike> {
    is<T extends UpdateName>(rawTypes: MaybeArray<SoftString<T>>): this is ContextType<Bot, T> & (IsAny<Bot["__Derives"]> extends true ? {} : Bot["__Derives"] extends {} ? Bot["__Derives"]["global"] & Bot["__Derives"][T] : {});
}

/** This object represents a mixin which has sender data (e.g. `senderId`, `from` etc.) */
declare class TargetMixin {
    payload: Record<string, any>;
    /** Checks if the instance has `from` and `senderId` properties */
    hasFrom(): this is Require<this, "from" | "senderId">;
    /** Sender, empty for messages sent to channels */
    get from(): User | undefined;
    /** Checks if the instance has `senderChat` property */
    hasSenderChat(): this is Require<this, "senderChat">;
    /**
     * Sender of the message, sent on behalf of a chat.
     * The channel itself for channel messages.
     * The supergroup itself for messages from anonymous group administrators.
     * The linked channel for messages automatically forwarded to the discussion group
     */
    get senderChat(): Chat | undefined;
    /**
     * *Optional*. If the sender of the message boosted the chat, the number of boosts added by the user
     */
    get senderBoostCount(): TelegramMessage["sender_boost_count"];
    /** Conversation the message belongs to */
    get chat(): Chat;
    /** Sender's ID */
    get senderId(): number | undefined;
    /** Chat ID */
    get chatId(): number;
    /** Unique identifier of the business connection from which the message was received. If non-empty, the message belongs to a chat of the corresponding business account that is independent from any potential bot chat which might share the same identifier. */
    get businessConnectionId(): string | undefined;
    /** Chat type */
    get chatType(): _gramio_types.TelegramChatType;
    /** Is this chat a private one? */
    isPM(): this is RequireValue<this, "chatType", ChatType.Private>;
    /** Is this chat a group? */
    isGroup(): this is RequireValue<this, "chatType", ChatType.Group>;
    /** Is this chat a supergroup? */
    isSupergroup(): this is RequireValue<this, "chatType", ChatType.Supergroup>;
    /** Is this chat a channel? */
    isChannel(): this is RequireValue<this, "chatType", ChatType.Channel>;
}

interface MessageContextOptions<Bot extends BotLike> {
    bot: Bot;
    update?: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId?: number;
    type?: UpdateName;
}
/** Called when `message` event occurs */
declare class MessageContext<Bot extends BotLike> extends Context<Bot> {
    #private;
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: MessageContextOptions<Bot>);
    /**
     * For text messages, the actual UTF-8 text of the message, 0-4096 characters
     */
    get text(): string | undefined;
    set text(text: string | undefined);
    /** Checks if the message has `text` property */
    hasText(): this is Require<this, "text">;
    /**
     * Caption for the animation, audio, document, photo, video or voice,
     * 0-1024 characters
     */
    get caption(): string | undefined;
    set caption(caption: string | undefined);
    /** Checks if the message has `caption` property */
    hasCaption(): this is Require<this, "caption">;
    /** Checks if the message has `dice` property */
    hasDice(): this is Require<this, "dice">;
    /** Value after the `/start` command */
    get rawStartPayload(): string | undefined;
    /**
     * Parsed value ("1" => 1, `{"a": 1}` => {a: 1}) after the `/start` command
     * @deprecated Use `rawStartPayload` instead. This property will be reworked and it will be the same as `rawStartPayload`
     */
    get startPayload(): string | number | undefined;
    /** Does this message have start payload? */
    hasStartPayload(): this is Require<this, "startPayload">;
    /** Checks if the message has `author_signature` property */
    hasAuthorSignature(): this is Require<this, "authorSignature">;
    /** Checks if there are any entities (with specified type) */
    hasEntities(type?: EntityType | MessageEntity["type"]): this is Require<this, "entities">;
    /** Checks if there are any caption entities (with specified type) */
    hasCaptionEntities(type?: EntityType | MessageEntity["type"]): this is Require<this, "captionEntities">;
    get paidMedia(): PaidMediaInfo | undefined;
    /** Replies to a received guest message */
    answerGuestQuery(result: TelegramParams.AnswerGuestQueryParams["result"], params?: Omit<TelegramParams.AnswerGuestQueryParams, "guest_query_id" | "result">): Promise<TelegramObjects.TelegramSentGuestMessage>;
    /** Message attachment */
    get attachment(): PhotoAttachment | ContactAttachment | PollAttachment | VenueAttachment | LocationAttachment | StickerAttachment | StoryAttachment | AnimationAttachment | AudioAttachment | DocumentAttachment | VideoAttachment | VideoNoteAttachment | VoiceAttachment | undefined;
    /** Does this message have an attachment with a specific type `type`? */
    hasAttachmentType<T extends AttachmentType>(type: T): this is RequireValue<this, "attachment", AttachmentsMapping[T]>;
    /** Does this message even have an attachment? */
    hasAttachment(): this is Require<this, "attachment">;
    /** Is this message a giveaway */
    isGiveaway(): this is Require<this, "giveaway">;
    /** Is this message an event? */
    isEvent(): boolean;
    /** Event type */
    get eventType(): MessageEventName | undefined;
    /** Is this message a service one? */
    isServiceMessage(): boolean;
    /** Is this message in topic */
    isTopicMessage(): boolean;
    /** Does this message have a forward origin? */
    hasForwardOrigin(): this is Require<this, "forwardOrigin">;
    /** Does this message have a quote? */
    hasQuote(): this is Require<this, "quote">;
    /** Does this message have link preview options? */
    hasLinkPreviewOptions(): this is Require<this, "linkPreviewOptions">;
    /** Does this message have external reply info? */
    hasReplyInfo(): this is Require<this, "externalReply">;
    /** Does this message have reply message? */
    hasReplyMessage(): this is Require<this, "replyMessage">;
    /** Checks if the sent message has `via_bot` property */
    hasViaBot(): this is Require<this, "viaBot">;
    /** @deprecated use `hasAttachmentType(type)` and `hasAttachment` instead */
    hasAttachments(type?: AttachmentType | AttachmentType): boolean;
}
interface MessageContext<Bot extends BotLike> extends Constructor<MessageContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, DownloadMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, MessageContext<Bot>, MessageContextOptions<Bot>> {
}

interface SendMixinMetadata {
    get chatId(): number;
    get businessConnectionId(): string | undefined;
    get senderId(): number | undefined;
    get threadId(): number | undefined;
    isTopicMessage: () => boolean;
}
/** This object represents a mixin which can invoke `chatId`/`senderId`-dependent methods */
declare class SendMixin<Bot extends BotLike> {
    /** Sends message to current chat */
    send(text: TelegramParams.SendMessageParams["text"], params?: Optional<TelegramParams.SendMessageParams, "chat_id" | "text">): Promise<MessageContext<Bot>>;
    /** Sends photo to current chat */
    sendPhoto(photo: TelegramParams.SendPhotoParams["photo"], params?: Optional<TelegramParams.SendPhotoParams, "chat_id" | "photo">): Promise<MessageContext<Bot>>;
    /** Sends live photo to current chat */
    sendLivePhoto(livePhoto: TelegramParams.SendLivePhotoParams["live_photo"], photo: TelegramParams.SendLivePhotoParams["photo"], params?: Optional<TelegramParams.SendLivePhotoParams, "chat_id" | "live_photo" | "photo">): Promise<MessageContext<Bot>>;
    /** Sends document to current chat */
    sendDocument(document: TelegramParams.SendDocumentParams["document"], params?: Optional<TelegramParams.SendDocumentParams, "chat_id" | "document">): Promise<MessageContext<Bot>>;
    /** Sends audio to current chat */
    sendAudio(audio: TelegramParams.SendAudioParams["audio"], params?: Optional<TelegramParams.SendAudioParams, "chat_id" | "audio">): Promise<MessageContext<Bot>>;
    /** Sends video to current chat */
    sendVideo(video: TelegramParams.SendVideoParams["video"], params?: Optional<TelegramParams.SendVideoParams, "chat_id" | "video">): Promise<MessageContext<Bot>>;
    /** Sends animation to current chat */
    sendAnimation(animation: TelegramParams.SendAnimationParams["animation"], params?: Optional<TelegramParams.SendAnimationParams, "chat_id" | "animation">): Promise<MessageContext<Bot>>;
    /** Sends video note to current chat */
    sendVideoNote(videoNote: TelegramParams.SendVideoNoteParams["video_note"], params?: Optional<TelegramParams.SendVideoNoteParams, "chat_id" | "video_note">): Promise<MessageContext<Bot>>;
    /** Sends voice to current chat */
    sendVoice(voice: TelegramParams.SendVoiceParams["voice"], params?: Optional<TelegramParams.SendVoiceParams, "chat_id" | "voice">): Promise<MessageContext<Bot>>;
    /** Sends location to current chat */
    sendLocation(latitude: number, longitude: number, params?: Optional<TelegramParams.SendLocationParams, "chat_id" | "latitude" | "longitude">): Promise<MessageContext<Bot>>;
    /** Sends invoice to current user */
    sendInvoice(params: Optional<TelegramParams.SendInvoiceParams, "chat_id">): Promise<MessageContext<Bot>>;
    /** Sends venue to current chat */
    sendVenue(params: Optional<TelegramParams.SendVenueParams, "chat_id">): Promise<MessageContext<Bot>>;
    /** Sends contact to current chat */
    sendContact(params: Optional<TelegramParams.SendContactParams, "chat_id">): Promise<MessageContext<Bot>>;
    /** Sends poll to current chat */
    sendPoll(params: Optional<TelegramParams.SendPollParams, "chat_id">): Promise<MessageContext<Bot>>;
    /** Sends checklist to current chat */
    sendChecklist(params: Optional<TelegramParams.SendChecklistParams, "chat_id">): Promise<MessageContext<Bot>>;
    /** Sends sticker */
    sendSticker(sticker: TelegramParams.SendStickerParams["sticker"], params?: Optional<TelegramParams.SendStickerParams, "sticker" | "chat_id">): Promise<MessageContext<Bot>>;
    /** Stops poll in current chat */
    stopPoll(messageId: number, params?: Partial<TelegramParams.StopPollParams>): Promise<Poll>;
    /** Sends a message draft to the current private chat */
    sendMessageDraft(params: Optional<TelegramParams.SendMessageDraftParams, "chat_id">): Promise<true>;
    /** Sends chat action to current chat */
    sendChatAction(action: TelegramParams.SendChatActionParams["action"], params?: Optional<TelegramParams.SendChatActionParams, "chat_id" | "action">): Promise<true>;
    /** Sends dice */
    sendDice(emoji: TelegramParams.SendDiceParams["emoji"], params?: Partial<TelegramParams.SendDiceParams>): Promise<MessageContext<Bot>>;
    /** Sends paid media to current chat */
    sendPaidMedia(paidMedia: TelegramParams.SendPaidMediaParams["media"], starCount: number, params?: Optional<TelegramParams.SendPaidMediaParams, "chat_id" | "media" | "star_count">): Promise<MessageContext<Bot>>;
    /** Sends media group to current chat */
    sendMediaGroup(mediaGroup: TelegramParams.SendMediaGroupParams["media"], params?: Optional<TelegramParams.SendMediaGroupParams, "chat_id" | "media">): Promise<MessageContext<Bot>[]>;
    /**
     * Automatically uses correct media method to send media
     *
     * @example
     * ```js
     * context.sendMedia({
     *   type: 'photo',
     *   photo: MediaUpload.path('./image.png'),
     *   caption: 'good image yes yes'
     * })
     * ```
     */
    sendMedia<T extends string>(query: {
        type: T;
    } & tSendMethods): ReturnType<T extends "animation" ? typeof this.sendAnimation : T extends "audio" ? typeof this.sendAudio : T extends "document" ? typeof this.sendDocument : T extends "photo" ? typeof this.sendPhoto : T extends "sticker" ? typeof this.sendSticker : T extends "video_note" ? typeof this.sendVideoNote : T extends "video" ? typeof this.sendVideo : T extends "voice" ? typeof this.sendVoice : () => never>;
    /** Streams message drafts to the current chat, finalizing each completed draft as a sent message.
     *
     * Accepts an Iterable or AsyncIterable of MessageDraftPiece (strings or objects with text+entities).
     * Uses sendMessageDraft for live typing previews and sendMessage to finalize each 4096-char segment.
     * Returns an array of sent MessageContext objects.
     *
     * @example
     * ```ts
     * // Stream from an async generator (e.g., LLM output)
     * const messages = await context.streamMessage(llmStream);
     * ```
     */
    streamMessage(stream: Iterable<MessageDraftPiece> | AsyncIterable<MessageDraftPiece>, options?: StreamMessageOptions): Promise<MessageContext<Bot>[]>;
    /** Returns chat boosts by the user */
    getChatBoosts(userId: number): Promise<TelegramObjects.TelegramUserChatBoosts>;
}
interface SendMixin<Bot extends BotLike> extends Context<Bot>, SendMixinMetadata {
}

interface NodeMixinMetadata {
    get id(): number;
}
/** Construct a type that has `reply_parameters` `Partial` */
type WithPartialReplyParameters<T> = T & {
    reply_parameters?: Partial<TelegramObjects.TelegramReplyParameters>;
};
type WithQuote<T = {}> = {
    quote: string;
} & T;
/** This object represents a mixin which has `id` field and can invoke `id`-dependent methods */
declare class NodeMixin<Bot extends BotLike> {
    /** Replies to current message */
    reply(text: TelegramParams.SendMessageParams["text"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendMessageParams, "chat_id" | "text">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with photo */
    replyWithPhoto(photo: TelegramParams.SendPhotoParams["photo"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendPhotoParams, "chat_id" | "photo">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with document */
    replyWithDocument(document: TelegramParams.SendDocumentParams["document"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendDocumentParams, "chat_id" | "document">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with audio */
    replyWithAudio(audio: TelegramParams.SendAudioParams["audio"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendAudioParams, "chat_id" | "audio">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with video */
    replyWithVideo(video: TelegramParams.SendVideoParams["video"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendVideoParams, "chat_id" | "video">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with animation */
    replyWithAnimation(animation: TelegramParams.SendAnimationParams["animation"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendAnimationParams, "chat_id" | "animation">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with video note */
    replyWithVideoNote(videoNote: TelegramParams.SendVideoNoteParams["video_note"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendVideoNoteParams, "chat_id" | "video_note">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with voice */
    replyWithVoice(voice: TelegramParams.SendVoiceParams["voice"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendVoiceParams, "chat_id" | "voice">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with media group */
    replyWithMediaGroup(mediaGroup: TelegramParams.SendMediaGroupParams["media"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendMediaGroupParams, "chat_id" | "media">>): Promise<MessageContext<Bot>[]>;
    /** Replies to current message with location */
    replyWithLocation(latitude: number, longitude: number, params?: WithPartialReplyParameters<Optional<TelegramParams.SendLocationParams, "chat_id" | "latitude" | "longitude">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with invoice */
    replyWithInvoice(params: WithPartialReplyParameters<Optional<TelegramParams.SendInvoiceParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with venue */
    replyWithVenue(params: WithPartialReplyParameters<Optional<TelegramParams.SendVenueParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with contact */
    replyWithContact(params: WithPartialReplyParameters<Optional<TelegramParams.SendContactParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with poll */
    replyWithPoll(params: WithPartialReplyParameters<Optional<TelegramParams.SendPollParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with sticker */
    replyWithSticker(sticker: TelegramParams.SendStickerParams["sticker"], params?: WithPartialReplyParameters<Optional<TelegramParams.SendStickerParams, "chat_id" | "sticker">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a dice */
    replyWithDice(emoji: TelegramParams.SendDiceParams["emoji"], params?: WithPartialReplyParameters<Partial<TelegramParams.SendDiceParams>>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote */
    replyWithQuote(params: WithQuote<{
        text: string;
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendMessageParams, "chat_id" | "text">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a photo */
    quoteWithPhoto(params: WithQuote<{
        photo: TelegramParams.SendPhotoParams["photo"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendPhotoParams, "chat_id" | "photo">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a document */
    quoteWithDocument(params: WithQuote<{
        document: TelegramParams.SendDocumentParams["document"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendDocumentParams, "chat_id" | "document">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and an audio */
    quoteWithAudio(params: WithQuote<{
        audio: TelegramParams.SendAudioParams["audio"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendAudioParams, "chat_id" | "audio">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a video */
    quoteWithVideo(params: WithQuote<{
        video: TelegramParams.SendVideoParams["video"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendVideoParams, "chat_id" | "video">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and an animation */
    quoteWithAnimation(params: WithQuote<{
        animation: TelegramParams.SendAnimationParams["animation"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendAnimationParams, "chat_id" | "animation">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a video note */
    quoteWithVideoNote(params: WithQuote<{
        videoNote: TelegramParams.SendVideoNoteParams["video_note"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendVideoNoteParams, "chat_id" | "video_note">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a voice */
    quoteWithVoice(params: WithQuote<{
        voice: TelegramParams.SendVoiceParams["voice"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendVoiceParams, "chat_id" | "voice">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a media group */
    quoteWithMediaGroup(params: WithQuote<{
        mediaGroup: TelegramParams.SendMediaGroupParams["media"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendMediaGroupParams, "chat_id" | "media">>): Promise<MessageContext<Bot>[]>;
    /** Replies to current message with a quote and a location */
    quoteWithLocation(params: WithQuote<{
        latitude: number;
        longitude: number;
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendLocationParams, "chat_id" | "latitude" | "longitude">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and an invoice */
    quoteWithInvoice(params: WithQuote & WithPartialReplyParameters<Optional<TelegramParams.SendInvoiceParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a venue */
    quoteWithVenue(params: WithQuote & WithPartialReplyParameters<Optional<TelegramParams.SendVenueParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a contact */
    quoteWithContact(params: WithQuote & WithPartialReplyParameters<Optional<TelegramParams.SendContactParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a poll */
    quoteWithPoll(params: WithQuote & WithPartialReplyParameters<Optional<TelegramParams.SendPollParams, "chat_id">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a sticker */
    quoteWithSticker(params: WithQuote<{
        sticker: TelegramParams.SendStickerParams["sticker"];
    }> & WithPartialReplyParameters<Optional<TelegramParams.SendStickerParams, "chat_id" | "sticker">>): Promise<MessageContext<Bot>>;
    /** Replies to current message with a quote and a dice */
    quoteWithDice(params: WithQuote<{
        emoji: TelegramParams.SendDiceParams["emoji"];
    }> & WithPartialReplyParameters<Partial<TelegramParams.SendDiceParams>>): Promise<MessageContext<Bot>>;
    /** Deletes current message */
    delete(params?: Optional<TelegramParams.DeleteMessageParams, "chat_id" | "message_id">): Promise<true>;
    /** Deletes messages in current chat */
    deleteMessages(ids: TelegramParams.DeleteMessagesParams["message_ids"]): Promise<true>;
    /** Removes a reaction from current message */
    deleteReaction(params?: Optional<TelegramParams.DeleteMessageReactionParams, "chat_id" | "message_id">): Promise<true>;
    /** Removes up to 10000 recent reactions in current chat added by a given user or chat */
    deleteAllReactions(params?: Optional<TelegramParams.DeleteAllMessageReactionsParams, "chat_id">): Promise<true>;
    /** Edits current message live location */
    editMessageLiveLocation(params: TelegramParams.EditMessageLiveLocationParams): Promise<true | MessageContext<Bot>>;
    /** Edits current message live location. An alias for `editMessageLiveLocation` */
    editLiveLocation(params: TelegramParams.EditMessageLiveLocationParams): Promise<true | MessageContext<Bot>>;
    /** Stops current message live location */
    stopMessageLiveLocation(params?: TelegramParams.StopMessageLiveLocationParams): Promise<true | MessageContext<Bot>>;
    /** Stops current message live location. An alias for `stopMessageLiveLocation` */
    stopLiveLocation(params?: TelegramParams.StopMessageLiveLocationParams): Promise<true | MessageContext<Bot>>;
    /** Edits current message text */
    editMessageText(text: TelegramParams.EditMessageTextParams["text"], params?: Partial<TelegramParams.EditMessageTextParams>): Promise<true | MessageContext<Bot>>;
    /** Edits current message text. An alias for `editMessageText` */
    editText(text: TelegramParams.EditMessageTextParams["text"], params?: Partial<TelegramParams.EditMessageTextParams>): Promise<true | MessageContext<Bot>>;
    /** Edits current message caption */
    editMessageCaption(caption: NonNullable<TelegramParams.EditMessageCaptionParams["caption"]>, params?: Partial<TelegramParams.EditMessageCaptionParams>): Promise<true | MessageContext<Bot>>;
    /** Edits current message caption. An alias for `editMessageCaption` */
    editCaption(caption: NonNullable<TelegramParams.EditMessageCaptionParams["caption"]>, params?: Partial<TelegramParams.EditMessageCaptionParams>): Promise<true | MessageContext<Bot>>;
    editChecklist(checklist: TelegramParams.EditMessageChecklistParams["checklist"], params?: Partial<TelegramParams.EditMessageChecklistParams>): Promise<MessageContext<Bot>>;
    /** Edits current message media */
    editMessageMedia(media: TelegramParams.EditMessageMediaParams["media"], params?: Partial<TelegramParams.EditMessageMediaParams>): Promise<true | MessageContext<Bot>>;
    /** Edits current message media. An alias for `editMessageMedia` */
    editMedia(media: TelegramParams.EditMessageMediaParams["media"], params?: Partial<TelegramParams.EditMessageMediaParams>): Promise<true | MessageContext<Bot>>;
    /** Edits current message reply markup */
    editMessageReplyMarkup(replyMarkup: TelegramParams.EditMessageReplyMarkupParams["reply_markup"], params?: Partial<TelegramParams.EditMessageReplyMarkupParams>): Promise<true | MessageContext<Bot>>;
    /** Edits current message reply markup. An alias for `editMessageReplyMarkup` */
    editReplyMarkup(replyMarkup: TelegramParams.EditMessageReplyMarkupParams["reply_markup"], params?: Partial<TelegramParams.EditMessageReplyMarkupParams>): Promise<true | MessageContext<Bot>>;
    /** Copies current message [into other chat if `chatId` is provided] */
    copy(params?: Optional<TelegramParams.CopyMessageParams, "chat_id" | "from_chat_id" | "message_id">): Promise<MessageId>;
    /** Copies messages from current chat and sends to another */
    copyMessages(chatId: TelegramParams.CopyMessagesParams["chat_id"], ids: TelegramParams.CopyMessagesParams["message_ids"], params?: Optional<TelegramParams.CopyMessagesParams, "chat_id" | "from_chat_id" | "message_ids">): Promise<MessageId[]>;
    /** Forwards current message [into other chat if `chatId` is provided] */
    forward(params?: Optional<TelegramParams.ForwardMessageParams, "chat_id" | "from_chat_id" | "message_id">): Promise<MessageContext<Bot>>;
    /** Forwards messages from current chat to another */
    forwardMessages(chatId: TelegramParams.ForwardMessagesParams["chat_id"], ids: TelegramParams.ForwardMessagesParams["message_ids"], params?: Optional<TelegramParams.ForwardMessagesParams, "chat_id" | "from_chat_id" | "message_ids">): Promise<MessageId[]>;
    /** Sets a reaction on a message */
    setReaction(reaction: TelegramObjects.TelegramReactionTypeEmoji["emoji"] | TelegramObjects.TelegramReactionType, params?: Optional<TelegramParams.SetMessageReactionParams, "chat_id" | "message_id">): Promise<true>;
    /** Sets multiple amount of reactions on a message */
    setReactions(rawReactions: (TelegramObjects.TelegramReactionTypeEmoji["emoji"] | TelegramObjects.TelegramReactionType)[], params?: Optional<TelegramParams.SetMessageReactionParams, "chat_id" | "message_id">): Promise<true>;
    /** Reacts to a message */
    react(rawReactions: MaybeArray<TelegramObjects.TelegramReactionTypeEmoji["emoji"] | TelegramObjects.TelegramReactionType>, params?: Optional<TelegramParams.SetMessageReactionParams, "chat_id" | "message_id">): Promise<true>;
    /** Clears reactions from the message */
    clearReactions(params?: Optional<TelegramParams.SetMessageReactionParams, "chat_id" | "message_id">): Promise<true>;
}
interface NodeMixin<Bot extends BotLike> extends Context<Bot>, NodeMixinMetadata, SendMixin<Bot> {
}

/** This object represents a mixin that is responsible for all the chat management methods */
declare class ChatControlMixin<Bot extends BotLike> {
    /** Sets a custom title */
    setCustomTitle(title: string, params?: Optional<TelegramParams.SetChatAdministratorCustomTitleParams, "chat_id" | "user_id">): Promise<true>;
    /** Sets default chat permissions */
    setChatDefaultPermissions(permissions: TelegramObjects.TelegramChatPermissions, params?: Optional<TelegramParams.SetChatPermissionsParams, "chat_id" | "permissions">): Promise<true>;
    /** Sets a new profile photo for the chat */
    setChatPhoto(photo: TelegramParams.SetChatPhotoParams["photo"], params?: Optional<TelegramParams.SetChatPhotoParams, "chat_id" | "photo">): Promise<true>;
    /** Deletes a chat photo */
    removeChatPhoto(params?: Optional<TelegramParams.DeleteChatPhotoParams, "chat_id">): Promise<true>;
    /** Changes chat title */
    setChatTitle(title: string, params?: Optional<TelegramParams.SetChatTitleParams, "chat_id" | "title">): Promise<true>;
    /** Changes chat description */
    setChatDescription(description: string, params?: Optional<TelegramParams.SetChatDescriptionParams, "chat_id" | "description">): Promise<true>;
    /** Sets new group stickerset */
    setChatStickerSet(name: string, params?: Optional<TelegramParams.SetChatStickerSetParams, "chat_id" | "sticker_set_name">): Promise<true>;
    /** Deletes group stickerset */
    deleteChatStickerSet(params?: Optional<TelegramParams.DeleteChatStickerSetParams, "chat_id">): Promise<true>;
}
interface ChatControlMixin<Bot extends BotLike> extends Context<Bot>, TargetMixin, NodeMixin<Bot> {
}

/** This object represents a mixin that works with all `*ChatInviteLink` methods */
declare class ChatInviteControlMixin<Bot extends BotLike> {
    /** Generates new primary invite link */
    exportInviteLink(params?: Optional<TelegramParams.ExportChatInviteLinkParams, "chat_id">): Promise<string>;
    /** Creates an additional invite link */
    createInviteLink(params?: Optional<TelegramParams.CreateChatInviteLinkParams, "chat_id">): Promise<_gramio_types.TelegramChatInviteLink>;
    /** Edits non-primary invite link created by the bot */
    editInviteLink(link: string, params?: Optional<TelegramParams.EditChatInviteLinkParams, "chat_id" | "invite_link">): Promise<_gramio_types.TelegramChatInviteLink>;
    /** Revokes an invite link generated by a bot */
    revokeInviteLink(link: string, params?: Optional<TelegramParams.RevokeChatInviteLinkParams, "chat_id" | "invite_link">): Promise<_gramio_types.TelegramChatInviteLink>;
}
interface ChatInviteControlMixin<Bot extends BotLike> extends Context<Bot>, TargetMixin {
}

/** This object represents a mixin that is able to control member's rights */
declare class ChatMemberControlMixin<Bot extends BotLike> {
    /** Bans a user (o_O) */
    banMember(params?: Optional<TelegramParams.BanChatMemberParams, "chat_id" | "user_id">): Promise<true>;
    /** Unbans a user (O_o) */
    unbanMember(params?: Optional<TelegramParams.UnbanChatMemberParams, "chat_id" | "user_id">): Promise<true>;
    /** Restricts a user (O_O) */
    restrictMember(permissions: TelegramObjects.TelegramChatPermissions, params?: Optional<TelegramParams.RestrictChatMemberParams, "chat_id" | "user_id">): Promise<true>;
    /** Promotes/demotes a user (o_o) */
    promoteMember(params?: Optional<TelegramParams.PromoteChatMemberParams, "chat_id" | "user_id">): Promise<true>;
    /** Sets a tag for a regular member */
    setMemberTag(tag: string | undefined, params?: Optional<TelegramParams.SetChatMemberTagParams, "chat_id" | "user_id" | "tag">): Promise<true>;
    /** Returns the token of a managed bot */
    getManagedBotToken(params?: Optional<TelegramParams.GetManagedBotTokenParams, "user_id">): Promise<string>;
    /** Revokes the current token of a managed bot and generates a new one */
    replaceManagedBotToken(params?: Optional<TelegramParams.ReplaceManagedBotTokenParams, "user_id">): Promise<string>;
    /** Returns the last messages from the personal chat (i.e., the chat currently added to their profile) of a given user */
    getUserPersonalChatMessages(limit: TelegramParams.GetUserPersonalChatMessagesParams["limit"], params?: Optional<TelegramParams.GetUserPersonalChatMessagesParams, "user_id" | "limit">): Promise<TelegramObjects.TelegramMessage[]>;
    /** Returns the access settings of a managed bot */
    getManagedBotAccessSettings(params?: Optional<TelegramParams.GetManagedBotAccessSettingsParams, "user_id">): Promise<TelegramObjects.TelegramBotAccessSettings>;
    /** Changes the access settings of a managed bot */
    setManagedBotAccessSettings(isAccessRestricted: TelegramParams.SetManagedBotAccessSettingsParams["is_access_restricted"], params?: Optional<TelegramParams.SetManagedBotAccessSettingsParams, "user_id" | "is_access_restricted">): Promise<true>;
}
interface ChatMemberControlMixin<Bot extends BotLike> extends Context<Bot>, TargetMixin, NodeMixin<Bot> {
}

/** This object is a mixin that does all the chat-sender stuff, right? */
declare class ChatSenderControlMixin<Bot extends BotLike> {
    /** Bans a channel chat */
    banChatSender(senderChatId: number, params?: Optional<TelegramParams.BanChatSenderChatParams, "chat_id" | "sender_chat_id">): Promise<true>;
    /** Unbans a channel chat */
    unbanChatSender(senderChatId: number, params?: Optional<TelegramParams.UnbanChatSenderChatParams, "chat_id" | "sender_chat_id">): Promise<true>;
}
interface ChatSenderControlMixin<Bot extends BotLike> extends Context<Bot>, TargetMixin {
}

interface ForumMixinMetadata {
    get threadId(): number | undefined;
}
/** This object represents a mixin that's used in all topic-related updates  */
declare class ForumMixin<Bot extends BotLike> {
    /** Checks whether this topic is actually a 'General' one */
    isGeneralTopic(): this is RequireValue<this, "threadId", undefined>;
    /** Returns custom emoji stickers, which can be used as a forum topic icon by any user */
    getTopicIcons(): Promise<_gramio_types.TelegramSticker[]>;
    /** Creates a topic */
    createTopic(name: string, params?: Optional<TelegramParams.CreateForumTopicParams, "chat_id" | "name">): Promise<_gramio_types.TelegramForumTopic>;
    /** Edits topic info */
    editTopic(params: Optional<TelegramParams.EditForumTopicParams, "chat_id" | "message_thread_id">): Promise<true>;
    /** Edits General topic info */
    editGeneralTopic(params: Optional<TelegramParams.EditGeneralForumTopicParams, "chat_id">): Promise<true>;
    /** Closes topic */
    closeTopic(params?: Optional<TelegramParams.CloseForumTopicParams, "chat_id" | "message_thread_id">): Promise<true>;
    /** Closes General topic */
    closeGeneralTopic(params?: Optional<TelegramParams.CloseGeneralForumTopicParams, "chat_id">): Promise<true>;
    /** Reopens topic */
    reopenTopic(params?: Optional<TelegramParams.ReopenForumTopicParams, "chat_id" | "message_thread_id">): Promise<true>;
    /** Reopens General topic */
    reopenGeneralTopic(params?: Optional<TelegramParams.ReopenGeneralForumTopicParams, "chat_id">): Promise<true>;
    /** Deletes topic along with all its messages */
    deleteTopic(params?: Optional<TelegramParams.DeleteForumTopicParams, "chat_id" | "message_thread_id">): Promise<true>;
    /** Clears the list of pinned messages */
    unpinAllTopicMessages(params?: Optional<TelegramParams.UnpinAllForumTopicMessagesParams, "chat_id" | "message_thread_id">): Promise<true>;
    /** Clears the list of pinned messages in a General topic */
    unpinAllGeneralTopicMessages(params?: Optional<TelegramParams.UnpinAllGeneralForumTopicMessagesParams, "chat_id">): Promise<true>;
    /** Hides General topic */
    hideGeneralTopic(params?: Optional<TelegramParams.HideGeneralForumTopicParams, "chat_id">): Promise<true>;
    /** Unhides General topic */
    unhideGeneralTopic(params?: Optional<TelegramParams.UnhideGeneralForumTopicParams, "chat_id">): Promise<true>;
}
interface ForumMixin<Bot extends BotLike> extends Context<Bot>, ForumMixinMetadata, NodeMixin<Bot> {
}

/** This object represents a mixin that ensures you have methods to pin/unpin messages in the chat */
declare class PinsMixin<Bot extends BotLike> {
    /** Adds message to the list of pinned messages */
    pinChatMessage(params?: Optional<TelegramParams.PinChatMessageParams, "chat_id" | "message_id">): Promise<true>;
    /** Removes message from the list of pinned messages  */
    unpinChatMessage(params?: Optional<TelegramParams.UnpinChatMessageParams, "chat_id" | "message_id">): Promise<true>;
    /** Clears the list of pinned messages */
    unpinAllChatMessages(params?: Optional<TelegramParams.UnpinAllChatMessagesParams, "chat_id">): Promise<true>;
}
interface PinsMixin<Bot extends BotLike> extends Context<Bot>, TargetMixin, NodeMixin<Bot> {
}

declare function sleep(ms: number): Promise<unknown>;
interface CreateActionControllerParams {
    /**
     * Interval between `sendChatAction` calls, in milliseconds
     * @default 5000
     */
    interval?: number;
    /**
     * Initial wait before the first cycle of `sendChatAction` calls, in milliseconds
     * @default 0
     */
    wait?: number;
    /**
     * Timeout for `sendChatAction` calls, in milliseconds. `0` to disable
     * @default 0
     */
    timeout?: number;
}
interface ControllerOptions<Bot extends BotLike> {
    action: TelegramParams.SendChatActionParams["action"];
    params: Optional<TelegramParams.SendChatActionParams, "chat_id" | "action"> & CreateActionControllerParams;
    context: Context<Bot> & SendMixin<Bot>;
}
/**
 * This object represent ChatAction mixin
 *
 * @example
 * ```typescript
 * bot.on("message", (context) => {
 * 		const controller = context.createActionController('typing');
 *
 *		controller.start();
 *
 *		await sleep(10_000)
 *
 *		controller.stop();
 *
 *		return context.send("soo sleepy...")
 * });
 * ```
 *
 *  */
declare class ChatActionController<Bot extends BotLike> {
    private abortController;
    action: TelegramParams.SendChatActionParams["action"];
    interval: number;
    wait: number;
    timeout: number;
    private context;
    constructor(options: ControllerOptions<Bot>);
    started: boolean;
    /** Starts the `sendChatAction(action)` loop until `stop()` is called */
    start(): void;
    /** Stops the loop */
    stop(): void;
}
declare class ChatActionMixin<Bot extends BotLike> {
    /** @deprecated Creates a controller that when `start()`ed executes `sendChatAction(action)` every `interval` milliseconds until `stop()`ped */
    createActionController(action: TelegramParams.SendChatActionParams["action"], params?: Optional<TelegramParams.SendChatActionParams, "chat_id" | "action"> & CreateActionControllerParams): ChatActionController<Bot>;
}
interface ChatActionMixin<Bot extends BotLike> extends Context<Bot>, SendMixin<Bot> {
}

interface CloneMixinMetadata<P> {
    /** The raw data that is used for this Context */
    payload: P;
}
/** This object represents a mixin which has `clone(options?)` method */
declare class CloneMixin<Bot extends BotLike, C extends Context<Bot> & Constructor<C>, Options extends Record<string, any>> {
    clone(options?: Options): C;
}
interface CloneMixin<Bot extends BotLike, C, Options> extends Context<Bot>, CloneMixinMetadata<Options["payload"]> {
}

interface DownloadMixinMetadata {
    get attachment(): Attachment | undefined;
}
/** This object represents a mixin that can be used to download media files */
declare class DownloadMixin<Bot extends BotLike> {
    /** Downloads attachment */
    download(): Promise<ArrayBuffer>;
    download(path: string): Promise<string>;
}
interface DownloadMixin<Bot extends BotLike> extends Context<Bot>, DownloadMixinMetadata {
}

interface BoostAddedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a forum topic closed in the chat. Currently holds no information. */
declare class BoostAddedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    /** Create new BoostAddedContext */
    constructor(options: BoostAddedContextOptions<Bot>);
    /** Number of boosts added by the user */
    get boostCount(): number;
}
interface BoostAddedContext<Bot extends BotLike> extends Constructor<BoostAddedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, BoostAddedContext<Bot>, BoostAddedContextOptions<Bot>> {
}

interface BusinessConnectionContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramBusinessConnection;
    updateId: number;
}
/** This object  Describes the connection of the bot with a business account. */
declare class BusinessConnectionContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramBusinessConnection;
    /** Create new BusinessConnectionContext */
    constructor(options: BusinessConnectionContextOptions<Bot>);
}
interface BusinessConnectionContext<Bot extends BotLike> extends Constructor<BusinessConnectionContext<Bot>>, BusinessConnection, CloneMixin<Bot, BusinessConnectionContext<Bot>, BusinessConnectionContextOptions<Bot>> {
}

interface BusinessMessagesDeletedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramBusinessMessagesDeleted;
    updateId: number;
}
/** This object represents a boost added to a chat or changed. */
declare class BusinessMessagesDeletedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramBusinessMessagesDeleted;
    /** Create new BusinessMessagesDeletedContext */
    constructor(options: BusinessMessagesDeletedContextOptions<Bot>);
}
interface BusinessMessagesDeletedContext<Bot extends BotLike> extends Constructor<BusinessMessagesDeletedContext<Bot>>, BusinessMessagesDeleted, CloneMixin<Bot, BusinessMessagesDeletedContext<Bot>, BusinessMessagesDeletedContextOptions<Bot>> {
}

interface CallbackQueryContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramCallbackQuery;
    updateId: number;
}
/** Called when `callback_query` event occurs */
declare class CallbackQueryContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramCallbackQuery;
    constructor(options: CallbackQueryContextOptions<Bot>);
    /** Checks if the query has `message` property */
    hasMessage(): this is Require<this, "message">;
    /**
     * Message with the callback button that originated the query.
     * Note that message content and message date will not be available
     * if the message is too old
     */
    get message(): MessageContext<Bot> | undefined;
    /**
     * Chat identifier of the message with the callback button that originated the query.
     */
    get chatId(): number | undefined;
    /** Checks if the query has `queryPayload` property */
    hasQueryPayload(): this is Require<this, "queryPayload">;
    /**
     * Data associated with the callback button.
     * Be aware that a bad client can send arbitrary data in this field.
     */
    get queryPayload(): unknown;
    /** Checks if the query has `inlineMessageId` property */
    hasInlineMessageId(): this is Require<this, "inlineMessageId">;
    /** Checks if the query has `data` property */
    hasData(): this is Require<this, "data">;
    /** Checks if the query has `gameShortName` property */
    hasGameShortName(): this is Require<this, "gameShortName">;
    /** Answers to current callback query */
    answerCallbackQuery(params?: string | Partial<TelegramParams.AnswerCallbackQueryParams>): Promise<true>;
    /** Sets the result of an interaction with a Web App and sends a corresponding message  */
    answerWebAppQuery(params: TelegramParams.AnswerWebAppQueryParams): Promise<TelegramObjects.TelegramSentWebAppMessage>;
    /** Answers to current callback query. An alias for `answerCallbackQuery` */
    answer(params?: string | Partial<TelegramParams.AnswerCallbackQueryParams>): Promise<true>;
    /** Edits a callback query messages text */
    editText(text: TelegramParams.EditMessageTextParams["text"], params?: Partial<TelegramParams.EditMessageTextParams>): Promise<true | TelegramObjects.TelegramMessage> | Promise<true | MessageContext<Bot>>;
    /** Edits a callback query messages caption */
    editCaption(caption: NonNullable<TelegramParams.EditMessageCaptionParams["caption"]>, params?: Partial<TelegramParams.EditMessageCaptionParams>): Promise<true | TelegramObjects.TelegramMessage> | Promise<true | MessageContext<Bot>>;
    /** Edits a callback query messages media */
    editMedia(media: TelegramParams.EditMessageMediaParams["media"], params?: Partial<TelegramParams.EditMessageMediaParams>): Promise<true | TelegramObjects.TelegramMessage> | Promise<true | MessageContext<Bot>>;
    /** Edits a callback query messages live location */
    editLiveLocation(params: TelegramParams.EditMessageLiveLocationParams): Promise<true | TelegramObjects.TelegramMessage> | Promise<true | MessageContext<Bot>>;
    /** Stops a callback query messages live location */
    stopLiveLocation(params?: TelegramParams.StopMessageLiveLocationParams): Promise<true | TelegramObjects.TelegramMessage> | Promise<true | MessageContext<Bot>>;
    /** Edits a callback query messages reply markup */
    editReplyMarkup(replyMarkup: TelegramParams.EditMessageReplyMarkupParams["reply_markup"], params?: Partial<TelegramParams.EditMessageReplyMarkupParams>): Promise<true | TelegramObjects.TelegramMessage> | Promise<true | MessageContext<Bot>>;
}
interface CallbackQueryContext<Bot extends BotLike> extends Constructor<CallbackQueryContext<Bot>>, CallbackQuery, SendMixin<Bot>, CloneMixin<Bot, CallbackQueryContext<Bot>, CallbackQueryContextOptions<Bot>> {
}

interface ChatBackgroundSetContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about chat background set. */
declare class ChatBackgroundSetContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: ChatBackgroundSetContextOptions<Bot>);
    /** Type of the background */
    get type(): BackgroundTypeFill | BackgroundTypeWallpaper | BackgroundTypePattern | BackgroundTypeChatTheme;
}
interface ChatBackgroundSetContext<Bot extends BotLike> extends Constructor<ChatBackgroundSetContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ChatBackgroundSetContext<Bot>, ChatBackgroundSetContextOptions<Bot>> {
}

interface ChatBoostContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramChatBoostUpdated;
    updateId: number;
}
/** This object represents a boost added to a chat or changed. */
declare class ChatBoostContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramChatBoostUpdated;
    constructor(options: ChatBoostContextOptions<Bot>);
}
interface ChatBoostContext<Bot extends BotLike> extends Constructor<ChatBoostContext<Bot>>, ChatBoostUpdated, SendMixin<Bot>, CloneMixin<Bot, ChatBoostContext<Bot>, ChatBoostContextOptions<Bot>> {
}

interface ChatJoinRequestContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramChatJoinRequest;
    updateId: number;
}
/**
 * Represents a join request sent to a chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatjoinrequest)
 */
declare class ChatJoinRequestContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramChatJoinRequest;
    constructor(options: ChatJoinRequestContextOptions<Bot>);
    /** Approves chat join request */
    approve(): Promise<true>;
    /** Declines chat join request */
    decline(): Promise<true>;
}
interface ChatJoinRequestContext<Bot extends BotLike> extends Constructor<ChatJoinRequestContext<Bot>>, ChatJoinRequest, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, ChatInviteControlMixin<Bot>, CloneMixin<Bot, ChatJoinRequestContext<Bot>, ChatJoinRequestContextOptions<Bot>> {
}

interface ChatMemberContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramChatMemberUpdated;
    updateId: number;
    type?: UpdateName;
}
/**
 * This object represents changes in the status of a chat member.
 *
 * [Documentation](https://core.telegram.org/bots/api/#chatmemberupdated)
 */
declare class ChatMemberContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramChatMemberUpdated;
    constructor(options: ChatMemberContextOptions<Bot>);
    /** Does this update have `invite_link` property? */
    hasInviteLink(): this is Require<this, "inviteLink">;
}
interface ChatMemberContext<Bot extends BotLike> extends Constructor<ChatMemberContext<Bot>>, ChatMemberUpdated, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, ChatControlMixin<Bot>, CloneMixin<Bot, ChatMemberContext<Bot>, ChatMemberContextOptions<Bot>> {
}

interface ChatOwnerChangedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about an ownership change in the chat. */
declare class ChatOwnerChangedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: ChatOwnerChangedContextOptions<Bot>);
    /** Service message: chat owner changed information */
    get chatOwnerChanged(): ChatOwnerChanged;
    /** The new owner of the chat */
    get newOwner(): User;
}
interface ChatOwnerChangedContext<Bot extends BotLike> extends Constructor<ChatOwnerChangedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ChatOwnerChangedContext<Bot>, ChatOwnerChangedContextOptions<Bot>> {
}

interface ChatOwnerLeftContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about the chat owner leaving the chat. */
declare class ChatOwnerLeftContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: ChatOwnerLeftContextOptions<Bot>);
    /** Service message: chat owner left information */
    get chatOwnerLeft(): ChatOwnerLeft;
    /** *Optional*. The user which will be the new owner of the chat if the previous owner does not return to the chat */
    get newOwner(): User | undefined;
}
interface ChatOwnerLeftContext<Bot extends BotLike> extends Constructor<ChatOwnerLeftContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ChatOwnerLeftContext<Bot>, ChatOwnerLeftContextOptions<Bot>> {
}

interface ChatSharedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object contains information about the chat whose identifier was shared with the bot using a `KeyboardButtonRequestChat` button. */
declare class ChatSharedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: ChatSharedContextOptions<Bot>);
    /** Identifier of the request */
    get requestId(): number;
    /** Identifier of the shared chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot may not have access to the chat and could be unable to use this identifier, unless the chat is already known to the bot by some other means. */
    get sharedChatId(): number;
    /** Title of the chat, if the title was requested by the bot. */
    get title(): string | undefined;
    /** Username of the chat, if the username was requested by the bot and available. */
    get username(): string | undefined;
    /** Available sizes of the chat photo, if the photo was requested by the bot. */
    get photo(): PhotoSize[] | undefined;
}
interface ChatSharedContext<Bot extends BotLike> extends Constructor<ChatSharedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ChatSharedContext<Bot>, ChatSharedContextOptions<Bot>> {
}

interface ChecklistTasksAddedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about checklist tasks added. */
declare class ChecklistTasksAddedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    event: TelegramObjects.TelegramChecklistTasksAdded;
    constructor(options: ChecklistTasksAddedContextOptions<Bot>);
    /**
     * *Optional*. Message containing the checklist to which the tasks were added. Note that the Message object in this field will not contain the *reply\_to\_message* field even if it itself is a reply.
     */
    get checklistMessage(): Message | undefined;
    /**
     * List of tasks added to the checklist
     */
    get tasks(): ChecklistTask[];
}
interface ChecklistTasksAddedContext<Bot extends BotLike> extends Constructor<ChecklistTasksAddedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ChecklistTasksAddedContext<Bot>, ChecklistTasksAddedContextOptions<Bot>> {
}

interface ChecklistTasksDoneContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about checklist tasks done. */
declare class ChecklistTasksDoneContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    event: TelegramObjects.TelegramChecklistTasksDone;
    constructor(options: ChecklistTasksDoneContextOptions<Bot>);
    /**
     * *Optional*. Message containing the checklist whose tasks were marked as done or not done. Note that the Message object in this field will not contain the *reply\_to\_message* field even if it itself is a reply.
     */
    get checklistMessage(): Message | undefined;
    /**
     * *Optional*. Identifiers of the tasks that were marked as done
     */
    get markedAsDoneTaskIds(): number[] | undefined;
    /**
     * *Optional*. Identifiers of the tasks that were marked as not done
     */
    get markedAsNotDoneTaskIds(): number[] | undefined;
}
interface ChecklistTasksDoneContext<Bot extends BotLike> extends Constructor<ChecklistTasksDoneContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ChecklistTasksDoneContext<Bot>, ChecklistTasksDoneContextOptions<Bot>> {
}

interface ChosenInlineResultContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramChosenInlineResult;
    updateId: number;
}
/**
 * The result of an inline query that was chosen by
 * a user and sent to their chat partner
 */
declare class ChosenInlineResultContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramChosenInlineResult;
    constructor(options: ChosenInlineResultContextOptions<Bot>);
    /** Checks if the result has `location` property */
    hasLocation(): this is Require<this, "location">;
    /** Checks if the query has `inlineMessageId` property */
    hasInlineMessageId(): this is Require<this, "inlineMessageId">;
    /** Edits a callback query messages text */
    editText(text: TelegramParams.EditMessageTextParams["text"], params?: Partial<TelegramParams.EditMessageTextParams>): Promise<true | TelegramObjects.TelegramMessage>;
    /** Edits a callback query messages caption */
    editCaption(caption: NonNullable<TelegramParams.EditMessageCaptionParams["caption"]>, params?: Partial<TelegramParams.EditMessageCaptionParams>): Promise<true | TelegramObjects.TelegramMessage>;
    /** Edits a callback query messages media */
    editMedia(media: TelegramParams.EditMessageMediaParams["media"], params?: Partial<TelegramParams.EditMessageMediaParams>): Promise<true | TelegramObjects.TelegramMessage>;
    /** Edits a callback query messages live location */
    editLiveLocation(params: TelegramParams.EditMessageLiveLocationParams): Promise<true | TelegramObjects.TelegramMessage>;
    /** Stops a callback query messages live location */
    stopLiveLocation(params?: TelegramParams.StopMessageLiveLocationParams): Promise<true | TelegramObjects.TelegramMessage>;
    /** Edits a callback query messages reply markup */
    editReplyMarkup(replyMarkup: TelegramParams.EditMessageReplyMarkupParams["reply_markup"], params?: Partial<TelegramParams.EditMessageReplyMarkupParams>): Promise<true | TelegramObjects.TelegramMessage>;
}
interface ChosenInlineResultContext<Bot extends BotLike> extends Constructor<ChosenInlineResultContext<Bot>>, ChosenInlineResult, SendMixin<Bot>, ChatActionMixin<Bot>, CloneMixin<Bot, ChosenInlineResultContext<Bot>, ChosenInlineResultContextOptions<Bot>> {
}

interface DeleteChatPhotoContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** Service message: the chat photo was deleted */
declare class DeleteChatPhotoContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: DeleteChatPhotoContextOptions<Bot>);
}
interface DeleteChatPhotoContext<Bot extends BotLike> extends Constructor<DeleteChatPhotoContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, DeleteChatPhotoContext<Bot>, DeleteChatPhotoContextOptions<Bot>> {
}

interface DirectMessagePriceChangedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about direct message price changed. */
declare class DirectMessagePriceChangedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    event: TelegramObjects.TelegramDirectMessagePriceChanged;
    constructor(options: DirectMessagePriceChangedContextOptions<Bot>);
    /**
     * *True*, if direct messages are enabled for the channel chat; false otherwise
     */
    get areDirectMessagesEnabled(): boolean;
    /**
     * *Optional*. The new number of Telegram Stars that must be paid by users for each direct message sent to the channel. Does not apply to users who have been exempted by administrators. Defaults to 0.
     */
    get directMessageStarCount(): number | undefined;
}
interface DirectMessagePriceChangedContext<Bot extends BotLike> extends Constructor<DirectMessagePriceChangedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, DirectMessagePriceChangedContext<Bot>, DirectMessagePriceChangedContextOptions<Bot>> {
}

interface ForumTopicClosedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a forum topic closed in the chat. Currently holds no information. */
declare class ForumTopicClosedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: ForumTopicClosedContextOptions<Bot>);
}
interface ForumTopicClosedContext<Bot extends BotLike> extends Constructor<ForumTopicClosedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ForumTopicClosedContext<Bot>, ForumTopicClosedContextOptions<Bot>> {
}

interface ForumTopicCreatedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a new forum topic created in the chat. */
declare class ForumTopicCreatedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: ForumTopicCreatedContextOptions<Bot>);
    /** Name of the topic */
    get name(): string;
    /** Color of the topic icon in RGB format */
    get iconColor(): number;
    /** Unique identifier of the custom emoji shown as the topic icon */
    get iconCustomEmojiId(): string | undefined;
    /** Checks whether the event has `iconCustomEmojiId` property */
    hasIconCustomEmojiId(): this is Require<this, "iconCustomEmojiId">;
}
interface ForumTopicCreatedContext<Bot extends BotLike> extends Constructor<ForumTopicCreatedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ForumTopicCreatedContext<Bot>, ForumTopicCreatedContextOptions<Bot>> {
}

interface ForumTopicEditedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about an edited forum topic. */
declare class ForumTopicEditedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: ForumTopicEditedContextOptions<Bot>);
    /** New name of the topic, if it was edited */
    get name(): string | undefined;
    /** Checks whether the `name` property has been edited */
    hasName(): this is Require<this, "name">;
    /** New identifier of the custom emoji shown as the topic icon, if it was edited; an empty string if the icon was removed */
    get iconCustomEmojiId(): string | undefined;
    /** Checks whether the `iconCustomEmojiId` property has been edited */
    hasIconCustomEmojiId(): this is Require<this, "iconCustomEmojiId">;
}
interface ForumTopicEditedContext<Bot extends BotLike> extends Constructor<ForumTopicEditedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ForumTopicEditedContext<Bot>, ForumTopicEditedContextOptions<Bot>> {
}

interface ForumTopicReopenedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a forum topic reopened in the chat. Currently holds no information. */
declare class ForumTopicReopenedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: ForumTopicReopenedContextOptions<Bot>);
    /** Checks whether this topic is actually a 'General' one */
    isGeneralTopic(): this is RequireValue<this, "threadId", undefined>;
}
interface ForumTopicReopenedContext<Bot extends BotLike> extends Constructor<ForumTopicReopenedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ForumTopicReopenedContext<Bot>, ForumTopicReopenedContextOptions<Bot>> {
}

interface GeneralForumTopicHiddenContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about General forum topic hidden in the chat. Currently holds no information. */
declare class GeneralForumTopicHiddenContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: GeneralForumTopicHiddenContextOptions<Bot>);
    /** Checks whether this topic is actually a 'General' one */
    isGeneralTopic(): this is RequireValue<this, "threadId", undefined>;
}
interface GeneralForumTopicHiddenContext<Bot extends BotLike> extends Constructor<GeneralForumTopicHiddenContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GeneralForumTopicHiddenContext<Bot>, GeneralForumTopicHiddenContextOptions<Bot>> {
}

interface GeneralForumTopicUnhiddenContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about General forum topic unhidden in the chat. Currently holds no information. */
declare class GeneralForumTopicUnhiddenContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: GeneralForumTopicUnhiddenContextOptions<Bot>);
    /** Checks whether this topic is actually a 'General' one */
    isGeneralTopic(): this is RequireValue<this, "threadId", undefined>;
}
interface GeneralForumTopicUnhiddenContext<Bot extends BotLike> extends Constructor<GeneralForumTopicUnhiddenContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GeneralForumTopicUnhiddenContext<Bot>, GeneralForumTopicUnhiddenContextOptions<Bot>> {
}

interface GiftContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object contains information about the chat whose identifier was shared with the bot using a `KeyboardButtonRequestChat` button. */
declare class GiftContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: GiftContextOptions<Bot>);
    /** Information about the gift */
    get giftInfo(): Gift;
    /** Identifier of the received gift for the bot; only present for gifts received on behalf of business accounts */
    get ownedGiftId(): string | undefined;
    /** Number of Telegram Stars that can be claimed by the receiver by converting the gift; omitted if conversion to Telegram Stars is impossible */
    get convertStarCount(): number | undefined;
    /** Number of Telegram Stars that were prepaid by the sender for the ability to upgrade the gift */
    get prepaidUpgradeStarCount(): number | undefined;
    /** True, if the gift can be upgraded to a unique gift */
    get canBeUpgraded(): true | undefined;
    /** Text of the message that was added to the gift */
    get text(): string | undefined;
    /** Special entities that appear in the text */
    get entities(): MessageEntity[] | undefined;
    /** True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone will be able to see them */
    get isPrivate(): true | undefined;
}
interface GiftContext<Bot extends BotLike> extends Constructor<GiftContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GiftContext<Bot>, GiftContextOptions<Bot>> {
}

interface GiftUpgradeSentContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about an upgrade of a gift that was purchased after the gift was sent. */
declare class GiftUpgradeSentContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: GiftUpgradeSentContextOptions<Bot>);
    /** Information about the gift */
    get giftInfo(): Gift;
    /** Identifier of the received gift for the bot; only present for gifts received on behalf of business accounts */
    get ownedGiftId(): string | undefined;
    /** Number of Telegram Stars that can be claimed by the receiver by converting the gift; omitted if conversion to Telegram Stars is impossible */
    get convertStarCount(): number | undefined;
    /** Number of Telegram Stars that were prepaid for the ability to upgrade the gift */
    get prepaidUpgradeStarCount(): number | undefined;
    /** True, if the gift can be upgraded to a unique gift */
    get canBeUpgraded(): true | undefined;
    /** Text of the message that was added to the gift */
    get text(): string | undefined;
    /** Special entities that appear in the text */
    get entities(): MessageEntity[] | undefined;
    /** True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone will be able to see them */
    get isPrivate(): true | undefined;
    /** True, if the gift's upgrade was purchased after the gift was sent */
    get isUpgradeSeparate(): true | undefined;
    /** *Optional*. Unique number reserved for this gift when upgraded */
    get uniqueGiftNumber(): number | undefined;
}
interface GiftUpgradeSentContext<Bot extends BotLike> extends Constructor<GiftUpgradeSentContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GiftUpgradeSentContext<Bot>, GiftUpgradeSentContextOptions<Bot>> {
}

interface GiveawayCompletedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about the creation of a scheduled giveaway. Currently holds no information. */
declare class GiveawayCompletedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: GiveawayCompletedContextOptions<Bot>);
    /** Giveaway completed */
    get eventGiveaway(): GiveawayCompleted;
}
interface GiveawayCompletedContext<Bot extends BotLike> extends Constructor<GiveawayCompletedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GiveawayCompletedContext<Bot>, GiveawayCompletedContextOptions<Bot>> {
}

interface GiveawayCreatedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about the creation of a scheduled giveaway. */
declare class GiveawayCreatedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: GiveawayCreatedContextOptions<Bot>);
    get eventGiveaway(): GiveawayCreated;
}
interface GiveawayCreatedContext<Bot extends BotLike> extends Constructor<GiveawayCreatedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GiveawayCreatedContext<Bot>, GiveawayCreatedContextOptions<Bot>> {
}

interface GiveawayWinnersContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a message about the completion of a giveaway with public winners. */
declare class GiveawayWinnersContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: GiveawayWinnersContextOptions<Bot>);
    /** Giveaway winners */
    get eventGiveaway(): GiveawayWinners;
}
interface GiveawayWinnersContext<Bot extends BotLike> extends Constructor<GiveawayWinnersContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ForumMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GiveawayWinnersContext<Bot>, GiveawayWinnersContextOptions<Bot>> {
}

interface GroupChatCreatedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** service message: the group has been created */
declare class GroupChatCreatedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: GroupChatCreatedContextOptions<Bot>);
}
interface GroupChatCreatedContext<Bot extends BotLike> extends Constructor<GroupChatCreatedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, GroupChatCreatedContext<Bot>, GroupChatCreatedContextOptions<Bot>> {
}

interface InlineQueryContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramInlineQuery;
    updateId: number;
}
/**
 * This object represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.
 *
 * [Documentation](https://core.telegram.org/bots/api/#inlinequery)
 */
declare class InlineQueryContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramInlineQuery;
    constructor(options: InlineQueryContextOptions<Bot>);
    /** Sender's ID */
    get senderId(): number;
    /** Checks if query has `location` property */
    hasLocation(): this is Require<this, "location">;
    /** Answers to inline query */
    answerInlineQuery(results: TelegramObjects.TelegramInlineQueryResult[], params?: Partial<TelegramParams.AnswerInlineQueryParams>): Promise<true>;
    /** Answers to inline query. An alias for `answerInlineQuery` */
    answer(results: TelegramObjects.TelegramInlineQueryResult[], params?: Partial<TelegramParams.AnswerInlineQueryParams>): Promise<true>;
}
interface InlineQueryContext<Bot extends BotLike> extends Constructor<InlineQueryContext<Bot>>, InlineQuery, CloneMixin<Bot, InlineQueryContext<Bot>, InlineQueryContextOptions<Bot>> {
}

interface InvoiceContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * Message is an invoice for a [payment](https://core.telegram.org/bots/api/#payments), information about the invoice. [More about payments »](https://core.telegram.org/bots/api/#payments)
 *
 * [Documentation](https://core.telegram.org/bots/api/#invoice)
 */
declare class InvoiceContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: InvoiceContextOptions<Bot>);
    /** Invoice */
    get eventInvoice(): Invoice;
}
interface InvoiceContext<Bot extends BotLike> extends Constructor<InvoiceContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, InvoiceContext<Bot>, InvoiceContextOptions<Bot>> {
}

interface LeftChatMemberContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** A member was removed from the group, information about them (this member may be the bot itself) */
declare class LeftChatMemberContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: LeftChatMemberContextOptions<Bot>);
    /** Left chat member */
    get eventMember(): User;
}
interface LeftChatMemberContext<Bot extends BotLike> extends Constructor<LeftChatMemberContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, LeftChatMemberContext<Bot>, LeftChatMemberContextOptions<Bot>> {
}

interface LocationContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a point on the map.
 *
 * [Documentation](https://core.telegram.org/bots/api/#location)
 */
declare class LocationContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: LocationContextOptions<Bot>);
    /** Location */
    get eventLocation(): Location;
}
interface LocationContext<Bot extends BotLike> extends Constructor<LocationContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, LocationContext<Bot>, LocationContextOptions<Bot>> {
}

interface ManagedBotContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramManagedBotUpdated;
    updateId: number;
}
/** This object represents a new bot created to be managed by the current bot, or a bot whose token was changed. */
declare class ManagedBotContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramManagedBotUpdated;
    constructor(options: ManagedBotContextOptions<Bot>);
    /** User that created the bot */
    get user(): User;
    /**
     * Information about the bot. Token of the bot can be fetched using the method `getManagedBotToken`.
     */
    get managedBot(): User;
    /** Returns the token of the managed bot created by this user */
    getManagedBotToken(params?: Optional<TelegramParams.GetManagedBotTokenParams, "user_id">): Promise<string>;
    /** Revokes the current token of the managed bot created by this user and generates a new one */
    replaceManagedBotToken(params?: Optional<TelegramParams.ReplaceManagedBotTokenParams, "user_id">): Promise<string>;
}
interface ManagedBotContext<Bot extends BotLike> extends Constructor<ManagedBotContext<Bot>>, CloneMixin<Bot, ManagedBotContext<Bot>, ManagedBotContextOptions<Bot>> {
}

interface ManagedBotCreatedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a user creating a bot that will be managed by the current bot. */
declare class ManagedBotCreatedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: ManagedBotCreatedContextOptions<Bot>);
    /**
     * Information about the bot. The bot's token can be fetched using the method `getManagedBotToken`.
     */
    get managedBot(): User;
}
interface ManagedBotCreatedContext<Bot extends BotLike> extends Constructor<ManagedBotCreatedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ManagedBotCreatedContext<Bot>, ManagedBotCreatedContextOptions<Bot>> {
}

interface MessageAutoDeleteTimerChangedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a service message about a change in auto-delete timer settings.
 *
 * [Documentation](https://core.telegram.org/bots/api/#messageautodeletetimerchanged)
 */
declare class MessageAutoDeleteTimerChangedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: MessageAutoDeleteTimerChangedContextOptions<Bot>);
    /** Message auto delete timer */
    get autoDeleteTimer(): MessageAutoDeleteTimerChanged;
}
interface MessageAutoDeleteTimerChangedContext<Bot extends BotLike> extends Constructor<MessageAutoDeleteTimerChangedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, MessageAutoDeleteTimerChangedContext<Bot>, MessageAutoDeleteTimerChangedContextOptions<Bot>> {
}

interface MessageReactionContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessageReactionUpdated;
    updateId: number;
}
/** This object represents a change of a reaction on a message performed by a user. */
declare class MessageReactionContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessageReactionUpdated;
    constructor(options: MessageReactionContextOptions<Bot>);
    /** Checks if context has the `user` property */
    hasUser(): this is Require<this, "user">;
    /** Checks if context has the `actorChat` property */
    hasActorChat(): this is Require<this, "actorChat">;
}
interface MessageReactionContext<Bot extends BotLike> extends Constructor<MessageReactionContext<Bot>>, MessageReactionUpdated, SendMixin<Bot>, NodeMixin<Bot>, CloneMixin<Bot, MessageReactionContext<Bot>, MessageReactionContextOptions<Bot>> {
}

interface MessageReactionCountContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessageReactionCountUpdated;
    updateId: number;
}
/** This object represents reaction changes on a message with anonymous reactions. */
declare class MessageReactionCountContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessageReactionCountUpdated;
    constructor(options: MessageReactionCountContextOptions<Bot>);
}
interface MessageReactionCountContext<Bot extends BotLike> extends Constructor<MessageReactionCountContext<Bot>>, MessageReactionCountUpdated, SendMixin<Bot>, NodeMixin<Bot>, CloneMixin<Bot, MessageReactionCountContext<Bot>, MessageReactionCountContextOptions<Bot>> {
}

interface MigrateFromChatIdContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier. */
declare class MigrateFromChatIdContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: MigrateFromChatIdContextOptions<Bot>);
    /** Chat ID */
    get eventId(): number;
}
interface MigrateFromChatIdContext<Bot extends BotLike> extends Constructor<MigrateFromChatIdContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, ChatInviteControlMixin<Bot>, CloneMixin<Bot, MigrateFromChatIdContext<Bot>, MigrateFromChatIdContextOptions<Bot>> {
}

interface MigrateToChatIdContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier. */
declare class MigrateToChatIdContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: MigrateToChatIdContextOptions<Bot>);
    /** Chat ID */
    get eventId(): number;
}
interface MigrateToChatIdContext<Bot extends BotLike> extends Constructor<MigrateToChatIdContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, ChatInviteControlMixin<Bot>, CloneMixin<Bot, MigrateToChatIdContext<Bot>, MigrateToChatIdContextOptions<Bot>> {
}

interface NewChatMembersContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**  New members that were added to the group or supergroup and information about them (the bot itself may be one of these members) */
declare class NewChatMembersContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: NewChatMembersContextOptions<Bot>);
    /** New chat members */
    get eventMembers(): User[];
}
interface NewChatMembersContext<Bot extends BotLike> extends Constructor<NewChatMembersContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, NewChatMembersContext<Bot>, NewChatMembersContextOptions<Bot>> {
}

interface NewChatPhotoContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** A chat photo was change to this value */
declare class NewChatPhotoContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: NewChatPhotoContextOptions<Bot>);
    /** New chat photo */
    get eventPhoto(): PhotoSize[];
}
interface NewChatPhotoContext<Bot extends BotLike> extends Constructor<NewChatPhotoContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, NewChatPhotoContext<Bot>, NewChatPhotoContextOptions<Bot>> {
}

interface NewChatTitleContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** A chat title was changed to this value */
declare class NewChatTitleContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: NewChatTitleContextOptions<Bot>);
    /** New chat title */
    get eventTitle(): string;
}
interface NewChatTitleContext<Bot extends BotLike> extends Constructor<NewChatTitleContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, NewChatTitleContext<Bot>, NewChatTitleContextOptions<Bot>> {
}

interface PaidMediaPurchasedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramPaidMediaPurchased;
    updateId: number;
}
/**
 * This object contains information about a paid media purchase.
 *
 * [Documentation](https://core.telegram.org/bots/api#paidmediapurchased)
 */
declare class PaidMediaPurchasedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramPaidMediaPurchased;
    constructor(options: PaidMediaPurchasedContextOptions<Bot>);
    get from(): User | undefined;
    /** Bot-specified paid media payload */
    get paidMediaPayload(): string;
}
interface PaidMediaPurchasedContext<Bot extends BotLike> extends Constructor<PaidMediaPurchasedContext<Bot>>, TargetMixin, SendMixin<Bot>, CloneMixin<Bot, PaidMediaPurchasedContext<Bot>, PaidMediaPurchasedContextOptions<Bot>> {
}

interface PaidMessagePriceChangedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * Describes a service message about a change in the price of paid messages within a chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#paidmessagepricechanged)
 */
declare class PaidMessagePriceChangedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: PaidMessagePriceChangedContextOptions<Bot>);
    /**
     * The new number of Telegram Stars that must be paid by non-administrator users of the supergroup chat for each sent message
     */
    get paidMessageStarCount(): number;
}
interface PaidMessagePriceChangedContext<Bot extends BotLike> extends Constructor<PaidMessagePriceChangedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, PaidMessagePriceChangedContext<Bot>, PaidMessagePriceChangedContextOptions<Bot>> {
}

interface PassportDataContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * Describes Telegram Passport data shared with the bot by the user.
 *
 * [Documentation](https://core.telegram.org/bots/api/#passportdata)
 */
declare class PassportDataContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: PassportDataContextOptions<Bot>);
    /** Telegram Passport data */
    get passportData(): PassportData;
}
interface PassportDataContext<Bot extends BotLike> extends Constructor<PassportDataContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, PassportDataContext<Bot>, PassportDataContextOptions<Bot>> {
}

interface PinnedMessageContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** Specified message was pinned. Note that the Message object in this field will not contain further *reply\_to\_message* fields even if it itself is a reply. */
declare class PinnedMessageContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: PinnedMessageContextOptions<Bot>);
    /** Pinned message */
    get eventMessage(): MessageContext<Bot>;
}
interface PinnedMessageContext<Bot extends BotLike> extends Constructor<PinnedMessageContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, PinnedMessageContext<Bot>, PinnedMessageContextOptions<Bot>> {
}

interface PollContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramPoll;
    updateId: number;
}
/**
 * This object contains information about a poll.
 *
 * [Documentation](https://core.telegram.org/bots/api/#poll)
 */
declare class PollContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramPoll;
    constructor(options: PollContextOptions<Bot>);
    /** Returns `true` if current poll is a regular one */
    isRegular(): this is RequireValue<this, "type", PollType.Regular>;
    /** Returns `true` if current poll is a quiz */
    isQuiz(): this is RequireValue<this, "type", PollType.Quiz>;
    /** Checks if poll has `correctOptionIds` property */
    hasCorrectOptionIds(): this is Require<this, "correctOptionIds">;
    /** Checks if poll has `explanation` property */
    hasExplanation(): this is Require<this, "explanation">;
    /** Checks if poll has `explanationEntities` property */
    hasExplanationEntities(): this is Require<this, "explanationEntities">;
    /** Checks if poll has `openPeriod` property */
    hasOpenPeriod(): this is Require<this, "openPeriod">;
    /** Checks if poll has `closeDate` property */
    hasCloseDate(): this is Require<this, "closeDate">;
}
interface PollContext<Bot extends BotLike> extends Constructor<PollContext<Bot>>, Poll, CloneMixin<Bot, PollContext<Bot>, PollContextOptions<Bot>> {
}

interface PollAnswerContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramPollAnswer;
    updateId: number;
}
/**
 * This object represents an answer of a user in a non-anonymous poll.
 *
 * [Documentation](https://core.telegram.org/bots/api/#pollanswer)
 */
declare class PollAnswerContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramPollAnswer;
    constructor(options: PollAnswerContextOptions<Bot>);
    /** Checks whether the current answer was non-anonymous and contains `user` field */
    isFromUser(): this is Require<this, "user">;
    /** Checks if current answer was answered anonymously and the `voterChat` is available */
    isFromChat(): this is Require<this, "voterChat">;
}
interface PollAnswerContext<Bot extends BotLike> extends Constructor<PollAnswerContext<Bot>>, PollAnswer, SendMixin<Bot>, ChatActionMixin<Bot>, CloneMixin<Bot, PollAnswerContext<Bot>, PollAnswerContextOptions<Bot>> {
}

interface PollOptionAddedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about an option added to a poll. */
declare class PollOptionAddedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: PollOptionAddedContextOptions<Bot>);
    /**
     * *Optional*. Message containing the poll to which the option was added, if known.
     */
    get pollMessage(): InaccessibleMessage | Omit<Message, "replyMessage"> | undefined;
    /** Unique identifier of the added option */
    get optionPersistentId(): string;
    /** Option text */
    get optionText(): string;
    /** *Optional*. Special entities that appear in the *optionText* */
    get optionTextEntities(): MessageEntity[] | undefined;
}
interface PollOptionAddedContext<Bot extends BotLike> extends Constructor<PollOptionAddedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, PollOptionAddedContext<Bot>, PollOptionAddedContextOptions<Bot>> {
}

interface PollOptionDeletedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about an option deleted from a poll. */
declare class PollOptionDeletedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: PollOptionDeletedContextOptions<Bot>);
    /**
     * *Optional*. Message containing the poll from which the option was deleted, if known.
     */
    get pollMessage(): InaccessibleMessage | Omit<Message, "replyMessage"> | undefined;
    /** Unique identifier of the deleted option */
    get optionPersistentId(): string;
    /** Option text */
    get optionText(): string;
    /** *Optional*. Special entities that appear in the *optionText* */
    get optionTextEntities(): MessageEntity[] | undefined;
}
interface PollOptionDeletedContext<Bot extends BotLike> extends Constructor<PollOptionDeletedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, PollOptionDeletedContext<Bot>, PollOptionDeletedContextOptions<Bot>> {
}

interface PreCheckoutQueryContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramPreCheckoutQuery;
    updateId: number;
}
/**
 * This object contains information about an incoming pre-checkout query.
 *
 * [Documentation](https://core.telegram.org/bots/api/#precheckoutquery)
 */
declare class PreCheckoutQueryContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramPreCheckoutQuery;
    constructor(options: PreCheckoutQueryContextOptions<Bot>);
    /** Checks if the query has `shippingOptionId` property */
    hasShippingOptionId(): this is Require<this, "shippingOptionId">;
    /** Checks if the query has `orderInfo` property */
    hasOrderInfo(): this is Require<this, "orderInfo">;
    /** Answers to the pending pre-checkout query */
    answerPreCheckoutQuery(params: Optional<TelegramParams.AnswerPreCheckoutQueryParams, "pre_checkout_query_id">): Promise<true>;
    /** Answers to the pending pre-checkout query. An alias for `answerPreCheckoutQuery` */
    answer(params: Optional<TelegramParams.AnswerPreCheckoutQueryParams, "pre_checkout_query_id">): Promise<true>;
}
interface PreCheckoutQueryContext<Bot extends BotLike> extends Constructor<PreCheckoutQueryContext<Bot>>, PreCheckoutQuery, SendMixin<Bot>, ChatActionMixin<Bot>, CloneMixin<Bot, PreCheckoutQueryContext<Bot>, PreCheckoutQueryContextOptions<Bot>> {
}

interface ProximityAlertTriggeredContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents the content of a service message, sent whenever a user in the chat triggers a proximity alert set by another user.
 *
 * [Documentation](https://core.telegram.org/bots/api/#proximityalerttriggered)
 */
declare class ProximityAlertTriggeredContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: ProximityAlertTriggeredContextOptions<Bot>);
    /**
     * Service message.
     * A user in the chat triggered another user's proximity alert
     * while sharing Live Location.
     */
    get proximityAlert(): ProximityAlertTriggered;
}
interface ProximityAlertTriggeredContext<Bot extends BotLike> extends Constructor<ProximityAlertTriggeredContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, ProximityAlertTriggeredContext<Bot>, ProximityAlertTriggeredContextOptions<Bot>> {
}

interface RefundedPaymentContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object contains basic information about a successful payment.
 *
 * [Documentation](https://core.telegram.org/bots/api/#RefundedPayment)
 */
declare class RefundedPaymentContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: RefundedPaymentContextOptions<Bot>);
    /**
     * This object contains basic information about a refunded payment.
     *
     * [Documentation](https://core.telegram.org/bots/api/#refundedpayment)
     */
    get eventRefundedPayment(): RefundedPayment;
}
interface RefundedPaymentContext<Bot extends BotLike> extends Constructor<RefundedPaymentContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, RefundedPaymentContext<Bot>, RefundedPaymentContextOptions<Bot>> {
}

interface RemovedChatBoostContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramChatBoostRemoved;
    updateId: number;
}
/** This object represents a boost removed from a chat. */
declare class RemovedChatBoostContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramChatBoostRemoved;
    constructor(options: RemovedChatBoostContextOptions<Bot>);
}
interface RemovedChatBoostContext<Bot extends BotLike> extends Constructor<RemovedChatBoostContext<Bot>>, ChatBoostRemoved, SendMixin<Bot>, CloneMixin<Bot, RemovedChatBoostContext<Bot>, RemovedChatBoostContextOptions<Bot>> {
}

interface ShippingQueryContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramShippingQuery;
    updateId: number;
}
/**
 * This object contains information about an incoming shipping query.
 *
 * [Documentation](https://core.telegram.org/bots/api/#shippingquery)
 */
declare class ShippingQueryContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramShippingQuery;
    constructor(options: ShippingQueryContextOptions<Bot>);
    /** Replies to shipping queries */
    answerShippingQuery<Ok extends boolean>(ok?: Ok, params?: Optional<TelegramParams.AnswerShippingQueryParams, "shipping_query_id" | "ok"> & Required<Pick<TelegramParams.AnswerShippingQueryParams, true extends Ok ? "shipping_options" : "error_message">>): Promise<true>;
    /** Replies to shipping queries. An alias for `answerShippingQuery` */
    answer<Ok extends boolean>(ok?: Ok, params?: Optional<TelegramParams.AnswerShippingQueryParams, "shipping_query_id" | "ok"> & Required<Pick<TelegramParams.AnswerShippingQueryParams, true extends Ok ? "shipping_options" : "error_message">>): Promise<true>;
}
interface ShippingQueryContext<Bot extends BotLike> extends Constructor<ShippingQueryContext<Bot>>, ShippingQuery, SendMixin<Bot>, ChatActionMixin<Bot>, CloneMixin<Bot, ShippingQueryContext<Bot>, ShippingQueryContextOptions<Bot>> {
}

interface SuccessfulPaymentContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object contains basic information about a successful payment.
 *
 * [Documentation](https://core.telegram.org/bots/api/#successfulpayment)
 */
declare class SuccessfulPaymentContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: SuccessfulPaymentContextOptions<Bot>);
    /** Received payment */
    get eventPayment(): SuccessfulPayment;
}
interface SuccessfulPaymentContext<Bot extends BotLike> extends Constructor<SuccessfulPaymentContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, SuccessfulPaymentContext<Bot>, SuccessfulPaymentContextOptions<Bot>> {
}

interface SuggestedPostApprovalFailedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about the failed approval of a suggested post. */
declare class SuggestedPostApprovalFailedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: SuggestedPostApprovalFailedContextOptions<Bot>);
    /** Expected price of the post */
    get price(): SuggestedPostPrice;
}
interface SuggestedPostApprovalFailedContext<Bot extends BotLike> extends Constructor<SuggestedPostApprovalFailedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, SuggestedPostApprovalFailedContext<Bot>, SuggestedPostApprovalFailedContextOptions<Bot>> {
}

interface SuggestedPostApprovedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about the approval of a suggested post. */
declare class SuggestedPostApprovedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: SuggestedPostApprovedContextOptions<Bot>);
    /** *Optional*. Amount paid for the post */
    get price(): SuggestedPostPrice | undefined;
    /** Date when the post will be published */
    get sendDate(): number;
}
interface SuggestedPostApprovedContext<Bot extends BotLike> extends Constructor<SuggestedPostApprovedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, SuggestedPostApprovedContext<Bot>, SuggestedPostApprovedContextOptions<Bot>> {
}

interface SuggestedPostDeclinedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about the rejection of a suggested post. */
declare class SuggestedPostDeclinedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: SuggestedPostDeclinedContextOptions<Bot>);
    /** *Optional*. Comment with which the post was declined */
    get comment(): string | undefined;
}
interface SuggestedPostDeclinedContext<Bot extends BotLike> extends Constructor<SuggestedPostDeclinedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, SuggestedPostDeclinedContext<Bot>, SuggestedPostDeclinedContextOptions<Bot>> {
}

interface SuggestedPostPaidContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a successful payment for a suggested post. */
declare class SuggestedPostPaidContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: SuggestedPostPaidContextOptions<Bot>);
    /** Currency in which the payment was made */
    get currency(): TelegramObjects.TelegramSuggestedPostPaidCurrency;
    /** *Optional*. The amount of the currency that was received by the channel in nanotoncoins; for payments in toncoins only */
    get amount(): number | undefined;
    /** *Optional*. The amount of Telegram Stars that was received by the channel; for payments in Telegram Stars only */
    get starAmount(): TelegramObjects.TelegramStarAmount | undefined;
}
interface SuggestedPostPaidContext<Bot extends BotLike> extends Constructor<SuggestedPostPaidContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, SuggestedPostPaidContext<Bot>, SuggestedPostPaidContextOptions<Bot>> {
}

interface SuggestedPostRefundedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object represents a service message about a payment refund for a suggested post. */
declare class SuggestedPostRefundedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: SuggestedPostRefundedContextOptions<Bot>);
    /** Reason for the refund */
    get reason(): TelegramObjects.TelegramSuggestedPostRefundedReason;
}
interface SuggestedPostRefundedContext<Bot extends BotLike> extends Constructor<SuggestedPostRefundedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, SuggestedPostRefundedContext<Bot>, SuggestedPostRefundedContextOptions<Bot>> {
}

interface UniqueGiftContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object contains information about the chat whose identifier was shared with the bot using a `KeyboardButtonRequestChat` button. */
declare class UniqueGiftContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: UniqueGiftContextOptions<Bot>);
    /**
     * Information about the gift
     */
    get uniqueGiftInfo(): UniqueGift;
    /**
     * Origin of the gift. Currently, either “upgrade” or “transfer”
     */
    get origin(): TelegramObjects.TelegramUniqueGiftInfoOrigin;
    /**
     * *Optional*. Unique identifier of the received gift for the bot; only present for gifts received on behalf of business accounts
     */
    get ownedGiftId(): string | undefined;
    /**
     * *Optional*. Number of Telegram Stars that must be paid to transfer the gift; omitted if the bot cannot transfer the gift
     */
    get transferStarCount(): number | undefined;
    /**
     * *Optional*. Point in time (Unix timestamp) when the gift can be transferred. If it is in the past, then the gift can be transferred now
     */
    get nextTransferDate(): Date | undefined;
}
interface UniqueGiftContext<Bot extends BotLike> extends Constructor<UniqueGiftContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, UniqueGiftContext<Bot>, UniqueGiftContextOptions<Bot>> {
}

interface UsersSharedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/** This object contains information about the users whose identifiers were shared with the bot using a `KeyboardButtonRequestUsers` button. */
declare class UsersSharedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    private event;
    constructor(options: UsersSharedContextOptions<Bot>);
    /** Identifier of the request */
    get requestId(): number;
    /** Identifier of the shared user. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot may not have access to the user and could be unable to use this identifier, unless the user is already known to the bot by some other means. */
    get users(): SharedUser[];
}
interface UsersSharedContext<Bot extends BotLike> extends Constructor<UsersSharedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, UsersSharedContext<Bot>, UsersSharedContextOptions<Bot>> {
}

interface VideoChatEndedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a service message about a video chat ended in the chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#videochatended)
 */
declare class VideoChatEndedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: VideoChatEndedContextOptions<Bot>);
    /** Service message: video chat ended */
    get eventEnded(): VideoChatEnded;
}
interface VideoChatEndedContext<Bot extends BotLike> extends Constructor<VideoChatEndedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, VideoChatEndedContext<Bot>, VideoChatEndedContextOptions<Bot>> {
}

interface VideoChatParticipantsInvitedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a service message about new members invited to a video chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#videochatparticipantsinvited)
 */
declare class VideoChatParticipantsInvitedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: VideoChatParticipantsInvitedContextOptions<Bot>);
    /** Service message: new participants invited to a video chat */
    get eventParticipantsInvited(): VideoChatParticipantsInvited;
}
interface VideoChatParticipantsInvitedContext<Bot extends BotLike> extends Constructor<VideoChatParticipantsInvitedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, VideoChatParticipantsInvitedContext<Bot>, VideoChatParticipantsInvitedContextOptions<Bot>> {
}

interface VideoChatScheduledContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a service message about a video chat scheduled in the chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#videochatscheduled)
 */
declare class VideoChatScheduledContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: VideoChatScheduledContextOptions<Bot>);
    /** Service message: video chat scheduled */
    get eventScheduled(): VideoChatScheduled;
}
interface VideoChatScheduledContext<Bot extends BotLike> extends Constructor<VideoChatScheduledContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, VideoChatScheduledContext<Bot>, VideoChatScheduledContextOptions<Bot>> {
}

interface VideoChatStartedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a service message about a video chat started in the chat.
 *
 * [Documentation](https://core.telegram.org/bots/api/#videochatstarted)
 */
declare class VideoChatStartedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: VideoChatStartedContextOptions<Bot>);
    /** Service message: video chat started */
    get eventStarted(): VideoChatStarted;
}
interface VideoChatStartedContext<Bot extends BotLike> extends Constructor<VideoChatStartedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, ChatInviteControlMixin<Bot>, ChatControlMixin<Bot>, ChatSenderControlMixin<Bot>, ChatMemberControlMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, VideoChatStartedContext<Bot>, VideoChatStartedContextOptions<Bot>> {
}

interface WebAppDataContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * Describes data sent from a [Web App](https://core.telegram.org/bots/webapps) to the bot.
 *
 * [Documentation](https://core.telegram.org/bots/api/#webappdata)
 */
declare class WebAppDataContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: WebAppDataContextOptions<Bot>);
    /** The data. Be aware that a bad client can send arbitrary data in this field. */
    get data(): string;
    /**
     * Text of the `web_app` keyboard button, from which the Web App was opened.
     * Be aware that a bad client can send arbitrary data in this field.
     */
    get buttonText(): string;
}
interface WebAppDataContext<Bot extends BotLike> extends Constructor<WebAppDataContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, CloneMixin<Bot, WebAppDataContext<Bot>, WebAppDataContextOptions<Bot>> {
}

interface WriteAccessAllowedContextOptions<Bot extends BotLike> {
    bot: Bot;
    update: TelegramObjects.TelegramUpdate;
    payload: TelegramObjects.TelegramMessage;
    updateId: number;
}
/**
 * This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method [requestWriteAccess](https://core.telegram.org/bots/webapps#initializing-mini-apps).
 *
 * [Documentation](https://core.telegram.org/bots/api/#writeaccessallowed)
 */
declare class WriteAccessAllowedContext<Bot extends BotLike> extends Context<Bot> {
    /** The raw data that is used for this Context */
    payload: TelegramObjects.TelegramMessage;
    constructor(options: WriteAccessAllowedContextOptions<Bot>);
    /** Service message: user allows a bot to write messages after adding it to the attachment menu */
    get eventAllowance(): WriteAccessAllowed;
}
interface WriteAccessAllowedContext<Bot extends BotLike> extends Constructor<WriteAccessAllowedContext<Bot>>, Message, TargetMixin, SendMixin<Bot>, ChatActionMixin<Bot>, NodeMixin<Bot>, PinsMixin<Bot>, CloneMixin<Bot, WriteAccessAllowedContext<Bot>, WriteAccessAllowedContextOptions<Bot>> {
}

/** Helper for getters memoization */
declare function memoizeGetters<T>(cls: new (...args: any[]) => T, fields: (keyof T)[]): void;
/** Helper for construct mixins */
declare const applyMixins: (derivedCtor: any, baseCtors: any[]) => void;
/** Guard to check is it play object */
declare const isPlainObject: (object: object) => object is Record<string, any>;
/** Helper for filter objects */
declare const filterPayload: (payload: Record<string, any>) => Record<string, unknown>;
/** Guard to check is string can be parsed via {@link JSON.parse} */
declare const isParsable: (source: string) => boolean;
/** Array of SERVICE_MESSAGE_EVENTS */
declare const SERVICE_MESSAGE_EVENTS: MessageEventName[];
/** Array of EVENTS */
declare const EVENTS: [keyof Message, MessageEventName][];

/**
 * @module
 *
 * Contexts for GramIO framework
 */

/**
 * Mapping UpdateNames to their contexts
 *
 * @example
 * ```typescript
 * contextMappings["message"] is MessageContext
 * ```
 *
 *  */
declare const contextsMappings: {
    callback_query: typeof CallbackQueryContext;
    chat_join_request: typeof ChatJoinRequestContext;
    chat_member: typeof ChatMemberContext;
    my_chat_member: typeof ChatMemberContext;
    chosen_inline_result: typeof ChosenInlineResultContext;
    delete_chat_photo: typeof DeleteChatPhotoContext;
    group_chat_created: typeof GroupChatCreatedContext;
    inline_query: typeof InlineQueryContext;
    invoice: typeof InvoiceContext;
    left_chat_member: typeof LeftChatMemberContext;
    location: typeof LocationContext;
    managed_bot: typeof ManagedBotContext;
    managed_bot_created: typeof ManagedBotCreatedContext;
    message_auto_delete_timer_changed: typeof MessageAutoDeleteTimerChangedContext;
    message: typeof MessageContext;
    channel_post: typeof MessageContext;
    edited_message: typeof MessageContext;
    edited_channel_post: typeof MessageContext;
    business_message: typeof MessageContext;
    edited_business_message: typeof MessageContext;
    guest_message: typeof MessageContext;
    deleted_business_messages: typeof BusinessMessagesDeletedContext;
    business_connection: typeof BusinessConnectionContext;
    migrate_from_chat_id: typeof MigrateFromChatIdContext;
    migrate_to_chat_id: typeof MigrateToChatIdContext;
    new_chat_members: typeof NewChatMembersContext;
    new_chat_photo: typeof NewChatPhotoContext;
    new_chat_title: typeof NewChatTitleContext;
    passport_data: typeof PassportDataContext;
    pinned_message: typeof PinnedMessageContext;
    poll_answer: typeof PollAnswerContext;
    poll_option_added: typeof PollOptionAddedContext;
    poll_option_deleted: typeof PollOptionDeletedContext;
    poll: typeof PollContext;
    pre_checkout_query: typeof PreCheckoutQueryContext;
    proximity_alert_triggered: typeof ProximityAlertTriggeredContext;
    write_access_allowed: typeof WriteAccessAllowedContext;
    boost_added: typeof BoostAddedContext;
    chat_background_set: typeof ChatBackgroundSetContext;
    checklist_tasks_done: typeof ChecklistTasksDoneContext;
    checklist_tasks_added: typeof ChecklistTasksAddedContext;
    direct_message_price_changed: typeof DirectMessagePriceChangedContext;
    suggested_post_approved: typeof SuggestedPostApprovedContext;
    suggested_post_approval_failed: typeof SuggestedPostApprovalFailedContext;
    suggested_post_declined: typeof SuggestedPostDeclinedContext;
    suggested_post_paid: typeof SuggestedPostPaidContext;
    suggested_post_refunded: typeof SuggestedPostRefundedContext;
    forum_topic_created: typeof ForumTopicCreatedContext;
    forum_topic_edited: typeof ForumTopicEditedContext;
    forum_topic_closed: typeof ForumTopicClosedContext;
    forum_topic_reopened: typeof ForumTopicReopenedContext;
    general_forum_topic_hidden: typeof GeneralForumTopicHiddenContext;
    general_forum_topic_unhidden: typeof GeneralForumTopicUnhiddenContext;
    shipping_query: typeof ShippingQueryContext;
    successful_payment: typeof SuccessfulPaymentContext;
    refunded_payment: typeof RefundedPaymentContext;
    users_shared: typeof UsersSharedContext;
    chat_shared: typeof ChatSharedContext;
    gift: typeof GiftContext;
    gift_upgrade_sent: typeof GiftUpgradeSentContext;
    unique_gift: typeof UniqueGiftContext;
    chat_owner_left: typeof ChatOwnerLeftContext;
    chat_owner_changed: typeof ChatOwnerChangedContext;
    paid_message_price_changed: typeof PaidMessagePriceChangedContext;
    video_chat_ended: typeof VideoChatEndedContext;
    video_chat_participants_invited: typeof VideoChatParticipantsInvitedContext;
    video_chat_scheduled: typeof VideoChatScheduledContext;
    video_chat_started: typeof VideoChatStartedContext;
    web_app_data: typeof WebAppDataContext;
    service_message: typeof MessageContext;
    purchased_paid_media: typeof PaidMediaPurchasedContext;
    message_reaction: typeof MessageReactionContext;
    message_reaction_count: typeof MessageReactionCountContext;
    chat_boost: typeof ChatBoostContext;
    removed_chat_boost: typeof RemovedChatBoostContext;
    giveaway_created: typeof GiveawayCreatedContext;
    giveaway_completed: typeof GiveawayCompletedContext;
    giveaway_winners: typeof GiveawayWinnersContext;
};

export { AcceptedGiftTypes, AnimationAttachment, Attachment, AudioAttachment, BackgroundFillFreeformGradient, BackgroundFillGradient, BackgroundFillSolid, BackgroundTypeChatTheme, BackgroundTypeFill, BackgroundTypePattern, BackgroundTypeWallpaper, Birthdate, BoostAddedContext, BotAccessSettings, BotCommand, BotDescription, BotShortDescription, BusinessBotRights, BusinessConnection, BusinessConnectionContext, BusinessIntro, BusinessLocation, BusinessMessagesDeleted, BusinessMessagesDeletedContext, BusinessOpeningHours, BusinessOpeningHoursInterval, CallbackGame, CallbackQuery, CallbackQueryContext, Chat, ChatActionMixin, ChatAdministratorRights, ChatBackground, ChatBackgroundSetContext, ChatBoost, ChatBoostAdded, ChatBoostContext, ChatBoostRemoved, ChatBoostSourceGiftCode, ChatBoostSourceGiveaway, ChatBoostSourcePremium, ChatBoostUpdated, ChatControlMixin, ChatFullInfo, ChatInviteControlMixin, ChatInviteLink, ChatJoinRequest, ChatJoinRequestContext, ChatLocation, ChatMember, ChatMemberContext, ChatMemberControlMixin, ChatMemberUpdated, ChatOwnerChanged, ChatOwnerChangedContext, ChatOwnerLeft, ChatOwnerLeftContext, ChatPermissions, ChatPhoto, ChatSenderControlMixin, ChatShared, ChatSharedContext, ChatType, Checklist, ChecklistTask, ChecklistTasksAdded, ChecklistTasksAddedContext, ChecklistTasksDone, ChecklistTasksDoneContext, ChosenInlineResult, ChosenInlineResultContext, CloneMixin, Contact, ContactAttachment, Context, DeleteChatPhotoContext, Dice, DirectMessagePriceChanged, DirectMessagePriceChangedContext, DirectMessagesTopic, DocumentAttachment, DownloadMixin, EVENTS, EncryptedCredentials, EncryptedPassportElement, EntityType, ExternalReplyInfo, File, FileAttachment, ForumMixin, ForumTopicClosed, ForumTopicClosedContext, ForumTopicCreated, ForumTopicCreatedContext, ForumTopicEdited, ForumTopicEditedContext, ForumTopicReopened, ForumTopicReopenedContext, Game, GeneralForumTopicHidden, GeneralForumTopicHiddenContext, GeneralForumTopicUnhidden, GeneralForumTopicUnhiddenContext, Gift, GiftBackground, GiftContext, GiftInfo, GiftUpgradeSentContext, Giveaway, GiveawayCompleted, GiveawayCompletedContext, GiveawayCreated, GiveawayCreatedContext, GiveawayWinners, GiveawayWinnersContext, GroupChatCreatedContext, InaccessibleMessage, InlineKeyboardButton, InlineKeyboardMarkup, InlineQuery, InlineQueryContext, InlineQueryResultLocation, InputChecklist, InputChecklistTask, InputLocationMessageContent, InputPollOption, Invoice, InvoiceContext, LeftChatMemberContext, LinkPreviewOptions, LivePhotoAttachment, Location, LocationAttachment, LocationContext, LoginUrl, ManagedBotContext, ManagedBotCreated, ManagedBotCreatedContext, ManagedBotUpdated, MaskPosition, MenuButton, Message, MessageAutoDeleteTimerChanged, MessageAutoDeleteTimerChangedContext, MessageContext, MessageEntity, MessageId, MessageOriginChannel, MessageOriginChat, MessageOriginHiddenUser, MessageOriginUser, MessageReactionContext, MessageReactionCountContext, MessageReactionCountUpdated, MessageReactionUpdated, MigrateFromChatIdContext, MigrateToChatIdContext, NewChatMembersContext, NewChatPhotoContext, NewChatTitleContext, NodeMixin, OrderInfo, PaidMediaInfo, PaidMediaLivePhoto, PaidMediaPhoto, PaidMediaPreview, PaidMediaPurchasedContext, PaidMediaVideo, PaidMessagePriceChangedContext, PassportData, PassportDataContext, PassportFile, PhotoAttachment, PhotoSize, PinnedMessageContext, PinsMixin, Poll, PollAnswer, PollAnswerContext, PollAttachment, PollContext, PollMedia, PollOption, PollOptionAdded, PollOptionAddedContext, PollOptionDeleted, PollOptionDeletedContext, PollType, PreCheckoutQuery, PreCheckoutQueryContext, ProximityAlertTriggered, ProximityAlertTriggeredContext, ReactionCount, ReactionTypeCustomEmoji, ReactionTypeEmoji, ReactionTypePaid, RefundedPayment, RefundedPaymentContext, RemovedChatBoostContext, SERVICE_MESSAGE_EVENTS, SendMixin, SentGuestMessage, SentWebAppMessage, SharedUser, ShippingAddress, ShippingQuery, ShippingQueryContext, StickerAttachment, StickerSet, Story, StoryAttachment, SuccessfulPayment, SuccessfulPaymentContext, SuggestedPostApprovalFailed, SuggestedPostApprovalFailedContext, SuggestedPostApproved, SuggestedPostApprovedContext, SuggestedPostDeclined, SuggestedPostDeclinedContext, SuggestedPostInfo, SuggestedPostPaid, SuggestedPostPaidContext, SuggestedPostPrice, SuggestedPostRefunded, SuggestedPostRefundedContext, TargetMixin, TextQuote, UniqueGift, UniqueGiftBackdrop, UniqueGiftBackdropColors, UniqueGiftColors, UniqueGiftContext, UniqueGiftInfo, UniqueGiftModel, UniqueGiftSymbol, Update, User, UserProfileAudios, UserProfilePhotos, UserRating, UsersShared, UsersSharedContext, Venue, VenueAttachment, VideoAttachment, VideoChatEnded, VideoChatEndedContext, VideoChatParticipantsInvited, VideoChatParticipantsInvitedContext, VideoChatScheduled, VideoChatScheduledContext, VideoChatStarted, VideoChatStartedContext, VideoNoteAttachment, VideoQuality, VoiceAttachment, WebAppData, WebAppDataContext, WebAppInfo, WriteAccessAllowed, WriteAccessAllowedContext, applyMixins, backgroundFillMap, backgroundTypeMap, contextsMappings, filterPayload, isParsable, isPlainObject, memoizeGetters, paidMediaMap, sleep };
export type { AttachmentType, AttachmentsMapping, BotLike, Constructor, ContextType, ContextsMapping, CustomEventName, DefaultAttachment, GetDerives, IsAny, JoinUnion, MaybeArray, MessageContextWithRequiredFrom, MessageDraftPiece, MessageEventName, Optional, Require, RequireValue, SoftString, StreamMessageOptions, UpdateName, tSendAnimation, tSendAudio, tSendDocument, tSendMethods, tSendPhoto, tSendSticker, tSendVideo, tSendVideoNote, tSendVoice };
