/** @format */ import * as tt from './telegram-types.d' import { TelegrafContext } from './context' type HearsTriggers = string[] | string | RegExp | RegExp[] | ((value: string, ctx: TContext) => RegExpExecArray | null) type BranchPredicate = boolean | ((ctx: TContext) => boolean | Promise) export interface MiddlewareFn { /* next's parameter is in a contravariant position, and thus, trying to type it prevents assigning `MiddlewareFn` to `MiddlewareFn`. Middleware passing the parameter should be a separate type instead. */ (ctx: TContext, next: () => Promise): void | Promise } export interface MiddlewareObj { middleware(): MiddlewareFn } export type Middleware = | MiddlewareFn | MiddlewareObj export declare class Composer implements MiddlewareObj { /** * Registers a middleware. */ use(...middlewares: ReadonlyArray>): this /** * Registers middleware for provided update type. */ on( updateTypes: | tt.UpdateType | tt.UpdateType[] | tt.MessageSubTypes | tt.MessageSubTypes[], ...middlewares: ReadonlyArray> ): this /** * Return the middleware created by this Composer */ middleware(): MiddlewareFn /** * Registers middleware for handling text messages. */ hears( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling callbackQuery data with regular expressions */ action( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling specified commands. */ command( command: string | string[], ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling callback_data actions with game query. */ gameQuery(...middlewares: ReadonlyArray>): this /** * Registers middleware for handling /start command. */ start(...middlewares: ReadonlyArray>): this /** * Registers middleware for handling /help command. */ help(...middlewares: ReadonlyArray>): this constructor(...middlewares: ReadonlyArray>) static unwrap( middleware: Middleware ): MiddlewareFn /** * Compose middlewares returning a fully valid middleware comprised of all those which are passed. */ static compose( middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling provided update types. */ static mount( updateTypes: tt.UpdateType | tt.UpdateType[], ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling matching text messages. */ static hears( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling matching callback queries. */ static action( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates pass thru middleware. */ static passThru(): MiddlewareFn /** * Generates safe version of pass thru middleware. */ static safePassThru(): MiddlewareFn /** * Generates optional middleware. * @param middleware middleware to run if the predicate returns true */ static optional( predicate: BranchPredicate, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates filter middleware. */ static filter( predicate: BranchPredicate ): MiddlewareFn /** * Generates drop middleware. */ static drop( predicate: BranchPredicate ): Middleware /** * @param trueMiddleware middleware to run if the predicate returns true * @param falseMiddleware middleware to run if the predicate returns false */ static branch( predicate: BranchPredicate, trueMiddleware: Middleware, falseMiddleware: Middleware ): MiddlewareFn static reply( text: string, extra?: tt.ExtraReplyMessage ): MiddlewareFn /** * Generates middleware that runs in the background. */ static fork( middleware: Middleware ): MiddlewareFn static log(logFn?: (s: string) => void): MiddlewareFn /** * Generates middleware running only in given chat types. */ static chatType( type: tt.ChatType | tt.ChatType[], ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware running only in private chats. */ static privateChat( ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware running only in groups and supergroups. */ static groupChat( ...middlewares: ReadonlyArray> ): MiddlewareFn }