/**
 * NestJS analysis tools — B1-B5 + C (nest_audit meta-orchestrator).
 * Discoverable via discover_tools(query="nestjs").
 */
export interface NestToolError {
    file: string;
    reason: string;
}
export interface NestLifecycleEntry {
    class_name: string;
    file: string;
    hook: string;
    is_async: boolean;
}
export interface NestLifecycleMapResult {
    hooks: NestLifecycleEntry[];
    errors?: NestToolError[];
}
export declare function nestLifecycleMap(repo: string): Promise<NestLifecycleMapResult>;
export interface NestModuleNode {
    name: string;
    file: string;
    is_global: boolean;
    imports: string[];
    exports: string[];
    providers: string[];
    controllers: string[];
}
export interface NestModuleGraphResult {
    modules: NestModuleNode[];
    edges: Array<{
        from: string;
        to: string;
    }>;
    circular_deps: string[][];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestModuleGraph(repo: string, options?: {
    max_modules?: number;
    output_format?: "json" | "mermaid";
}): Promise<NestModuleGraphResult>;
/** DFS cycle detection on directed graph. Exported for reuse in nest-ext-tools.ts (G12). */
export declare function detectCycles(nodes: string[], edges: Array<{
    from: string;
    to: string;
}>): string[][];
export interface NestDINode {
    name: string;
    file: string;
    kind: "provider" | "module" | "controller";
    scope?: string;
}
export interface NestDIEdge {
    from: string;
    to: string;
    via: "inject" | "import";
}
export interface NestDIGraphResult {
    nodes: NestDINode[];
    edges: NestDIEdge[];
    cycles: string[][];
    cross_module_warnings: Array<{
        provider: string;
        used_in: string;
        defined_in: string;
    }>;
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestDIGraph(repo: string, options?: {
    max_nodes?: number;
    focus?: string;
}): Promise<NestDIGraphResult>;
export interface NestGuardChainEntry {
    route: string;
    method: string;
    controller: string;
    file: string;
    chain: Array<{
        /** G1: "middleware" layer for NestModule.configure(consumer) entries */
        layer: "global" | "controller" | "method" | "middleware";
        /** G4: "metadata" type for custom decorators like @Roles('admin') */
        type: "guard" | "interceptor" | "pipe" | "filter" | "metadata";
        name: string;
        file?: string;
        /** G4: raw decorator argument text (e.g., "admin" from @Roles('admin')) */
        args?: string;
    }>;
}
export interface NestGuardChainResult {
    routes: NestGuardChainEntry[];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestGuardChain(repo: string, options?: {
    path?: string;
    max_routes?: number;
}): Promise<NestGuardChainResult>;
export interface NestRouteEntry {
    method: string;
    path: string;
    handler: string;
    controller: string;
    file: string;
    guards: string[];
    params: Array<{
        decorator: string;
        name: string;
        type?: string;
    }>;
    /** G9: method-level @Version or controller-level { version } */
    version?: string;
    /** G10: Swagger annotations */
    swagger?: {
        summary?: string;
        tags?: string[];
        bearer?: boolean;
    };
    /** G13: @HealthCheck() tagged */
    is_health_check?: boolean;
    /** G11: inline pipe names from @UsePipes(new ValidationPipe(...)) */
    inline_pipes?: string[];
}
export interface NestRouteInventoryResult {
    routes: NestRouteEntry[];
    stats: {
        total_routes: number;
        protected: number;
        unprotected: number;
    };
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestRouteInventory(repo: string, options?: {
    max_routes?: number;
}): Promise<NestRouteInventoryResult>;
export interface NestPipelineStep {
    layer: "middleware" | "global-guard" | "global-filter" | "global-pipe" | "global-interceptor" | "controller-guard" | "controller-interceptor" | "controller-pipe" | "controller-filter" | "method-guard" | "method-interceptor" | "method-pipe" | "method-filter" | "custom-metadata" | "handler";
    name: string;
    file?: string;
    note?: string;
}
export interface NestRequestPipelineResult {
    route: string;
    method: string;
    controller: string;
    handler: string;
    file: string;
    steps: NestPipelineStep[];
    mermaid?: string;
    errors?: NestToolError[];
}
/**
 * Wave 3 Feature 1: visualize the full NestJS request pipeline for a single route.
 * Walks middleware.configure() chain, global guards/filters/pipes/interceptors,
 * controller-level decorators, method-level decorators, and the handler itself.
 * Returns ordered steps + optional mermaid diagram.
 */
export declare function nestRequestPipeline(repo: string, options: {
    route: string;
    method?: string;
    output_format?: "json" | "mermaid";
}): Promise<NestRequestPipelineResult>;
export interface NestAuditResult {
    framework_detected: boolean;
    lifecycle_map?: NestLifecycleMapResult;
    module_graph?: NestModuleGraphResult;
    di_graph?: NestDIGraphResult;
    guard_chain?: NestGuardChainResult;
    route_inventory?: NestRouteInventoryResult;
    graphql_map?: import("./nest-ext-tools.js").NestGraphQLMapResult;
    websocket_map?: import("./nest-ext-tools.js").NestWebSocketMapResult;
    schedule_map?: import("./nest-ext-tools.js").NestScheduleMapResult;
    typeorm_map?: import("./nest-ext-tools.js").NestTypeOrmMapResult;
    microservice_map?: import("./nest-ext-tools.js").NestMicroserviceMapResult;
    anti_patterns?: Array<{
        pattern: string;
        count: number;
    }>;
    summary: {
        total_routes: number;
        cycles: number;
        violations: number;
        anti_pattern_hits: number;
        failed_checks: number;
        truncated_checks: string[];
    };
    warnings?: NestToolError[];
    errors?: Array<{
        check: string;
        reason: string;
    }>;
}
export declare function nestAudit(repo: string, options?: {
    checks?: string[];
}): Promise<NestAuditResult>;
//# sourceMappingURL=nest-tools.d.ts.map