/**
 * NestJS extended analysis tools — Wave 2 (G5, G6, G7/G8, G12, G14).
 * Separate file from nest-tools.ts to keep it under the CQ11 soft limit.
 * All tools follow the established regex-over-source pattern with CQ6/CQ8 guarantees.
 */
import { type NestToolError } from "./nest-tools.js";
export interface NestGraphQLEntry {
    resolver_class: string;
    file: string;
    operation: "Query" | "Mutation" | "Subscription" | "ResolveField";
    handler: string;
    return_type?: string;
}
export interface NestGraphQLMapResult {
    entries: NestGraphQLEntry[];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestGraphQLMap(repo: string, options?: {
    max_entries?: number;
}): Promise<NestGraphQLMapResult>;
export interface NestGatewayEntry {
    gateway_class: string;
    file: string;
    port?: number;
    namespace?: string;
    events: Array<{
        event: string;
        handler: string;
    }>;
}
export interface NestWebSocketMapResult {
    gateways: NestGatewayEntry[];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestWebSocketMap(repo: string, options?: {
    max_gateways?: number;
}): Promise<NestWebSocketMapResult>;
export interface NestScheduledEntry {
    class_name: string;
    file: string;
    handler: string;
    decorator: "@Cron" | "@Interval" | "@Timeout" | "@OnEvent";
    expression?: string;
    interval_ms?: number;
}
export interface NestScheduleMapResult {
    entries: NestScheduledEntry[];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestScheduleMap(repo: string, options?: {
    max_schedules?: number;
    max_files_scanned?: number;
}): Promise<NestScheduleMapResult>;
export interface NestEntityNode {
    name: string;
    file: string;
    table?: string;
}
export interface NestEntityEdge {
    from: string;
    to: string;
    relation: "OneToMany" | "ManyToOne" | "OneToOne" | "ManyToMany";
}
export interface NestTypeOrmMapResult {
    entities: NestEntityNode[];
    edges: NestEntityEdge[];
    cycles: string[][];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestTypeOrmMap(repo: string, options?: {
    max_entities?: number;
}): Promise<NestTypeOrmMapResult>;
export interface NestMicroserviceEntry {
    type: "MessagePattern" | "EventPattern";
    pattern: string;
    handler: string;
    controller: string;
    file: string;
}
export interface NestMicroserviceMapResult {
    patterns: NestMicroserviceEntry[];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestMicroserviceMap(repo: string, options?: {
    max_patterns?: number;
}): Promise<NestMicroserviceMapResult>;
export interface NestQueueProcessor {
    processor_class: string;
    queue_name: string;
    file: string;
    handlers: Array<{
        decorator: "@Process" | "@OnQueueActive" | "@OnQueueCompleted" | "@OnQueueFailed" | "@OnQueueStalled" | "@OnQueueWaiting" | "@OnQueueProgress" | "@OnQueueError";
        handler: string;
        job_name?: string;
    }>;
}
export interface NestQueueMapResult {
    processors: NestQueueProcessor[];
    /** Consumers that inject @InjectQueue('name') — producer side */
    producers: Array<{
        class_name: string;
        queue_name: string;
        file: string;
    }>;
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestQueueMap(repo: string, options?: {
    max_processors?: number;
}): Promise<NestQueueMapResult>;
export interface NestScopeIssue {
    provider: string;
    scope: "REQUEST" | "TRANSIENT";
    file: string;
    /** Transitive callers that become request-scoped by DI bubble-up */
    escalated_consumers: string[];
}
export interface NestScopeAuditResult {
    request_scoped: NestScopeIssue[];
    transient_scoped: NestScopeIssue[];
    errors?: NestToolError[];
    truncated?: boolean;
}
export declare function nestScopeAudit(repo: string, options?: {
    max_providers?: number;
}): Promise<NestScopeAuditResult>;
export interface OpenAPIOperation {
    path: string;
    method: string;
    summary?: string;
    description?: string;
    tags?: string[];
    security?: Array<{
        [scheme: string]: string[];
    }>;
    parameters: Array<{
        name: string;
        in: "path" | "query" | "header";
        required: boolean;
        schema?: {
            type: string;
        };
    }>;
    requestBody?: {
        content: {
            [mime: string]: {
                schema: {
                    $ref?: string;
                    type?: string;
                };
            };
        };
    };
    responses: {
        [statusCode: string]: {
            description?: string;
            content?: {
                [mime: string]: {
                    schema: {
                        $ref?: string;
                    };
                };
            };
        };
    };
}
export interface OpenAPISchema {
    type: "object";
    properties: {
        [name: string]: {
            type?: string;
            $ref?: string;
            required?: boolean;
            description?: string;
            enum?: string[];
        };
    };
    required?: string[];
}
export interface NestOpenAPIResult {
    openapi: "3.1.0";
    info: {
        title: string;
        version: string;
    };
    paths: {
        [path: string]: {
            [method: string]: OpenAPIOperation;
        };
    };
    components: {
        schemas: {
            [name: string]: OpenAPISchema;
        };
    };
    errors?: NestToolError[];
}
export declare function nestOpenAPIExtract(repo: string, options?: {
    title?: string;
    version?: string;
}): Promise<NestOpenAPIResult>;
//# sourceMappingURL=nest-ext-tools.d.ts.map