import { TLObject } from '../TL.js';
import { Raws } from '../../platform.node.js';
import { Message, InlineQuery, ChosenInlineResult, ShippingQuery, PreCheckoutQuery } from '../Messages/index.js';
import { Poll, PollAnswer } from '../Messages/Medias/Poll.js';
import { CallbackQuery } from './callbackQuery.js';
import { ChatMemberUpdated } from './chatMember.js';
import { ChatJoinRequest } from './chatJoinRequest.js';
import type { Snake } from '../../Client/index.js';
import type { Telegram } from '../../Methods/Telegram.js';
export interface TypeUpdate {
    message?: Message;
    editedMessage?: Message;
    channelPost?: Message;
    editedChannelPost?: Message;
    inlineQuery?: InlineQuery;
    chosenInlineResult?: ChosenInlineResult;
    callbackQuery?: CallbackQuery;
    shippingQuery?: ShippingQuery;
    preCheckoutQuery?: PreCheckoutQuery;
    poll?: Poll;
    pollAnswer?: PollAnswer;
    myChatMember?: ChatMemberUpdated;
    chatMember?: ChatMemberUpdated;
    chatJoinRequest?: ChatJoinRequest;
    secretChat?: Raws.UpdateSecretChatMessage;
}
export interface ContextUpdate {
    className: string;
    client: Snake;
    api: Telegram;
    msg?: Message;
    match?: Array<RegExpExecArray>;
    _me: Raws.Raw.User;
}
export declare class Update extends TLObject {
    message?: Message;
    editedMessage?: Message;
    channelPost?: Message;
    editedChannelPost?: Message;
    inlineQuery?: InlineQuery;
    chosenInlineResult?: ChosenInlineResult;
    callbackQuery?: CallbackQuery;
    shippingQuery?: ShippingQuery;
    preCheckoutQuery?: PreCheckoutQuery;
    poll?: Poll;
    pollAnswer?: PollAnswer;
    chatJoinRequest?: ChatJoinRequest;
    myChatMember?: ChatMemberUpdated;
    chatMember?: ChatMemberUpdated;
    secretChat?: Raws.UpdateSecretChatMessage;
    constructor({ message, editedMessage, channelPost, editedChannelPost, inlineQuery, chosenInlineResult, callbackQuery, shippingQuery, preCheckoutQuery, poll, pollAnswer, chatJoinRequest, myChatMember, chatMember, secretChat, }: TypeUpdate, client: Snake);
    static parse(client: Snake, update: Raws.Raw.TypeUpdate, chats: Array<Raws.Raw.TypeChat>, users: Array<Raws.Raw.TypeUser>): Promise<Update | undefined>;
    static updateNewMessage(client: Snake, update: Raws.Raw.UpdateNewMessage | Raws.Raw.UpdateNewChannelMessage, chats: Array<Raws.Raw.TypeChat>, users: Array<Raws.Raw.TypeUser>): Promise<Update>;
    static updateEditMessage(client: Snake, update: Raws.Raw.UpdateEditMessage | Raws.Raw.UpdateEditChannelMessage, chats: Array<Raws.Raw.TypeChat>, users: Array<Raws.Raw.TypeUser>): Promise<Update>;
    get msg(): Message | undefined;
    get _me(): Raws.Raw.User;
}
