export declare interface Route { pattern: string regex: RegExp params: string[] filePath: string isDynamic: boolean layout?: string middleware?: string[] meta?: Record } export declare interface RouteMatch { route: Route params: Record } export declare interface RouterConfig { pagesDir?: string pagesDirs?: string[] extensions?: string[] layouts?: boolean middleware?: boolean trailingSlash?: boolean caseSensitive?: boolean } export declare interface RouteLocation { path: string params: Record query: Record fullPath: string meta: Record } export declare interface CookieOptions { expires?: Date | number path?: string domain?: string secure?: boolean httpOnly?: boolean sameSite?: 'strict' | 'lax' | 'none' } export declare interface CookieManager { get(name: string): string | undefined set(name: string, value: string, options?: CookieOptions): void delete(name: string): void getAll(): Record } export declare interface StorageManager { get(key: string): string | null set(key: string, value: string): void remove(key: string): void isAvailable(): boolean } export declare interface MiddlewareContext { to: RouteLocation from: RouteLocation | null isClient: boolean isServer: boolean cookies: CookieManager storage: StorageManager state: Record request?: Request responseHeaders: Headers } export declare interface MiddlewareOptions { mode?: MiddlewareMode } export declare interface RouteMiddlewareDefinition { handler: RouteMiddlewareHandler mode: MiddlewareMode } export declare interface NavigateToOptions { replace?: boolean external?: boolean redirectCode?: 301 | 302 | 303 | 307 | 308 } export declare interface NavigateToResult { type: 'redirect' path: string options: NavigateToOptions } export declare interface NavigationError { statusCode: number message: string } export declare interface AbortNavigationResult { type: 'abort' error: NavigationError } export declare interface MiddlewareResult { passed: boolean redirect?: NavigateToResult abort?: AbortNavigationResult state: Record responseHeaders: Headers } export type MiddlewareMode = 'universal' | 'server' | 'client'; export type RouteMiddlewareHandler = ( context: MiddlewareContext, ) => void | Promise | NavigationResult | Promise; export type NavigationResult = NavigateToResult | AbortNavigationResult;