/** @format */ import { MiddlewareObj, Middleware, MiddlewareFn } from './composer' import { TelegrafContext } from './context' type TRoute = string type MaybePromise = T | Promise export type RouteFn = ( ctx: TContext ) => MaybePromise<{ route?: TRoute } | null> type HandlersMap = Map< TRoute, Middleware > declare class Router implements MiddlewareObj { routeFn: RouteFn handlers: HandlersMap otherwiseHandler: Middleware constructor(routeFn: RouteFn, handlers?: HandlersMap) on( route: TRoute, fn: Middleware, ...fns: Middleware[] ): this otherwise(fn: Middleware, ...fns: Middleware[]): this middleware(): MiddlewareFn }