import type { MiddlewareInput } from './middleware-registry.js'; import type { Router } from './router.js'; import type { RouteHandler, RouteParams } from './types.js'; export type { RouteGroupOptions } from './route-group-options.js'; export interface RouteScope { prefix: string; middleware: MiddlewareInput[]; namePrefix?: string; } export interface Routable { get(pattern: string, handler: RouteHandler): Routable; post(pattern: string, handler: RouteHandler): Routable; put(pattern: string, handler: RouteHandler): Routable; patch(pattern: string, handler: RouteHandler): Routable; delete(pattern: string, handler: RouteHandler): Routable; use(...middleware: MiddlewareInput[]): Routable; name(name: string): Routable; throttle(preset: string): Routable; url(name: string, params?: RouteParams): string; } export interface ScopedRouteRegistrar { get(pattern: string, handler: RouteHandler): Routable; post(pattern: string, handler: RouteHandler): Routable; put(pattern: string, handler: RouteHandler): Routable; patch(pattern: string, handler: RouteHandler): Routable; delete(pattern: string, handler: RouteHandler): Routable; } export interface Groupable extends Routable { prefix(prefix: string): MiddlewareGroupable; namePrefix(prefix: string): MiddlewareGroupable; group(callback: (routes: Groupable) => void): Routable; } export interface MiddlewareGroupable extends Groupable { middleware(...middleware: MiddlewareInput[]): MiddlewareGroupable; } export declare function joinRoutePaths(...segments: string[]): string; export declare class RouteGroupBuilder implements MiddlewareGroupable { private readonly router; private readonly scope; constructor(router: Router, scope?: RouteScope); prefix(prefix: string): MiddlewareGroupable; middleware(...middleware: MiddlewareInput[]): MiddlewareGroupable; namePrefix(prefix: string): MiddlewareGroupable; group(callback: (routes: Groupable) => void): Routable; get(pattern: string, handler: RouteHandler): Routable; post(pattern: string, handler: RouteHandler): Routable; put(pattern: string, handler: RouteHandler): Routable; patch(pattern: string, handler: RouteHandler): Routable; delete(pattern: string, handler: RouteHandler): Routable; use(...middleware: MiddlewareInput[]): Routable; name(name: string): Routable; throttle(preset: string): Routable; url(name: string, params?: RouteParams): string; private add; } //# sourceMappingURL=route-group.d.ts.map