import type { Context } from '../../context';
import type { Middleware, MiddlewareFn } from '../../middleware';
import type { MaybePromise } from '../../types';
/** Результат маршрутизации может дополнить `ctx.state` перед вызовом обработчика. */
export type DispatchResult<Key extends PropertyKey> = Key | {
    route: Key;
    state?: Record<string | symbol, unknown>;
};
/**
 * Выбирает обработчик по результату `route`.
 * Для пустого или неизвестного маршрута вызывает `fallback`.
 */
export declare function dispatch<C extends Context, Handlers extends Record<PropertyKey, Middleware<C>>>(route: (ctx: C) => MaybePromise<DispatchResult<keyof Handlers> | null | undefined>, handlers: Handlers, fallback?: Middleware<C>): MiddlewareFn<C>;
