import { I18n, I18nContext, TemplateData } from '@edjopato/telegraf-i18n'; import { Context, NarrowedContext } from 'telegraf'; import { InputFile } from 'telegraf/typings/core/types/typegram'; import { GenericMenu } from '../generic-menu'; import { KeyboardButton } from '../keyboard-button'; import { CheckboxMenu, RadioMenu, RangeMenu, RegularMenu } from '../menus'; export interface MenuFormatting { current?: string; active?: string; disabled?: string; } export declare type GenericState = string[] | string | Record; export declare type MessageType = 'message' | 'image'; export interface GenericConfig { action: string; customMessage?: { type: MessageType; content: string | InputFile; }; message: string; submitMessage?: string; filters: MenuFilters | MenuFilters[]; state?: TState; debug?: boolean; replaceable?: boolean; type?: unknown; formatting?: MenuFormatting; menuGetter?(menuCtx: TCtx): GenericMenu; menuSetter?(menuCtx: TCtx, menu: TMenu): any; onChange?(changeCtx: MenuContextUpdate, state: TState): any; beforeChange?(changeCtx: MenuContextUpdate, state: TState): any; onSubmit?(submitCtx: MenuContextUpdate, state: TState): any; onSubmitUpdater?(submitCtx: MenuContextUpdate, messageId: number, state: TState): any; } export interface RegularMenuConfig extends Omit, TValue>, 'state' | 'onSubmit' | 'beforeChange' | 'onSubmitUpdater' | 'submitMessage' | 'onChange'> { onChange?(changeCtx: MenuContextUpdate, state: TValue): any; } export interface RadioConfig extends GenericConfig, TValue> { } export interface RangeConfig = RangeState, TValue extends string = string> extends GenericConfig, TValue> { } export interface CheckboxConfig = string[] | Record, TValue extends string = string> extends GenericConfig, TValue> { invertedSelection?: boolean; } export declare type MenuFilters = KeyboardButton[]; export interface RangeState { from?: TValue; to?: TValue; } export interface MenuOption { action: string; value: TValue; isDefault?: boolean; } export interface MenuOptionShort { a: string; v: TValue; d?: 1 | 0; } export declare type I18nOverride = I18n & { locale(languageCode: string): void; t(resourceKey: string, templateData?: Readonly): string; }; export declare type DefaultCtx = NarrowedContext & { match: RegExpExecArray; }, any> & { i18n?: I18nContext; }; export declare type MenuContextUpdate = { state: { callbackData: MenuOption; }; } & TCtx;