import type { Core } from '../core/core'; import type { Chat, Update, User, Message, MediaOptions } from '../types'; import type { ReplyMarkup } from '../markup/types'; import type { UpdateTypes } from '../router/types'; import { InputFile } from '../types/inputFile'; export interface BaseContext { readonly update: Update; readonly updateType: UpdateTypes; readonly from: User; readonly chat: Chat | null; session: any; __sceneSession?: any; scene?: { state: any; enter: (sceneId: string, initialState?: any) => Promise; leave: () => Promise; }; wizard?: { next: () => void; back: () => void; selectStep: (index: number) => void; }; reply(text: string, markup?: ReplyMarkup): Promise; replyWithPhoto(photo: InputFile, options?: MediaOptions): Promise; deleteMessage(): Promise; } export interface MessageContext extends BaseContext { readonly message: Message; readonly updateType: "message"; readonly chat: Chat; editMessageText(text: string, markup?: ReplyMarkup): Promise; editMessageCaption(caption: string, markup?: ReplyMarkup): Promise; editMessageReplyMarkup(markup: ReplyMarkup): Promise; } export interface EditedMessageContext extends BaseContext { readonly message: Message; readonly updateType: "edited_message"; readonly chat: Chat; editMessageText(text: string, markup?: ReplyMarkup): Promise; editMessageCaption(caption: string, markup?: ReplyMarkup): Promise; editMessageReplyMarkup(markup: ReplyMarkup): Promise; } export interface CallbackQueryContext extends BaseContext { readonly callbackQuery: Update['callback_query']; readonly updateType: "callback_query"; readonly chat: Chat; readonly message?: Message; readonly callbackData: string; editMessageText(text: string, markup?: ReplyMarkup): Promise; editMessageCaption(caption: string, markup?: ReplyMarkup): Promise; editMessageReplyMarkup(markup: ReplyMarkup): Promise; answerCallbackQuery(text?: string, showAlert?: boolean): Promise; } export interface PreCheckoutQueryContext extends BaseContext { readonly preCheckoutQuery: Update['pre_checkout_query']; readonly updateType: "pre_checkout_query"; readonly chat: null; answerPreCheckoutQuery(ok: boolean, errorMessage?: string): Promise; } export declare class Context implements BaseContext { readonly update: Update; private core; readonly updateType: UpdateTypes; readonly message?: Update['message']; readonly callbackQuery?: Update['callback_query']; readonly callbackData?: string; readonly user?: User; readonly chat: Chat | null; session: any; __sceneSession?: any; scene: BaseContext['scene']; wizard: BaseContext['wizard']; constructor(update: Update, core: Core); get from(): User; get msg(): Message | undefined; get match(): string[] | undefined; /** * Replies to the current update. Only works for message, edited_message, and callback_query updates. Will throw an error if used with pre_checkout_query updates. * @param text * @param markup * @returns */ reply(text: string, markup?: ReplyMarkup): Promise; replyWithPhoto(photo: InputFile, options?: MediaOptions): Promise; editMessageText(text: string, markup?: ReplyMarkup): Promise | undefined; editMessageCaption(caption: string, markup?: ReplyMarkup): Promise | undefined; editMessageReplyMarkup(markup: ReplyMarkup): Promise | undefined; deleteMessage(): Promise; answerCallbackQuery(text?: string, showAlert?: boolean): Promise; answerPreCheckoutQuery(ok: boolean, errorMessage?: string): Promise; private resolveUser; private resolveChat; }