/**
 * Route Discovery — Explicit Routing Only
 *
 * Discovers routes from `createApp({ router })` by importing the router
 * module at build time and reading `router.routes` from the Hono instance.
 *
 * File-based routing (scanning src/api/**) is no longer supported.
 */
import type { Logger } from '../../../types';
import { type AppRouterDetection } from '../app-router-detector';
export interface RouteMetadata {
    id: string;
    filename: string;
    path: string;
    method: string;
    version: string;
    type: 'api' | 'sms' | 'email' | 'cron' | 'websocket' | 'sse' | 'stream';
    agentIds?: string[];
    config?: Record<string, unknown>;
    schema?: {
        input?: string;
        output?: string;
    };
}
/**
 * Extract path parameters from a route path.
 * Matches patterns like :id, :userId, :id?, *path, etc.
 */
export declare function extractPathParams(path: string): string[];
/**
 * Generate a deterministic route ID from project/deployment/type/method/filename/path/version.
 * Must match the format used by the platform (prefix: route_, SHA1 hash of all components).
 */
export declare function generateRouteId(projectId: string, deploymentId: string, type: string, method: string, filename: string, path: string, version: string): string;
/**
 * Discover all routes from explicit router mounts in createApp({ router }).
 *
 * Imports each router module at build time and reads `router.routes` from
 * the Hono instance to extract method, path, and route type.
 *
 * @throws If no explicit router is detected in app.ts
 */
export declare function discoverRoutes(srcDir: string, projectId: string, deploymentId: string, logger: Logger): Promise<{
    routes: RouteMetadata[];
    explicitRouter?: AppRouterDetection;
}>;
export interface RouteConflict {
    type: 'duplicate';
    routes: Array<{
        method: string;
        path: string;
        filename: string;
    }>;
    message: string;
}
/**
 * Detect conflicts between routes.
 */
export declare function detectRouteConflicts(routes: Array<{
    method: string;
    path: string;
    filename: string;
}>): RouteConflict[];
//# sourceMappingURL=route-discovery.d.ts.map