/**
 * Core Capability Scan Workflow
 *
 * Handles the step-by-step capability scanning workflow including resource selection,
 * specification, processing mode selection, and the actual scanning process
 */
import { Logger } from './error-handling';
import { CapabilityVectorService } from './capability-vector-service';
import { KubernetesDiscovery } from './discovery';
import { CapabilityInferenceEngine } from './capabilities';
/**
 * Args passed to capability scan operations
 */
interface CapabilityScanArgs {
    response?: string;
    resourceList?: string;
    interaction_id?: string;
}
/**
 * Response from capability scan operations
 */
interface CapabilityScanResponse {
    success: boolean;
    operation: string;
    dataType: string;
    REQUIRED_NEXT_CALL?: Record<string, unknown>;
    workflow?: Record<string, unknown>;
    status?: string;
    sessionId?: string;
    message?: string;
    checkProgress?: Record<string, unknown>;
    error?: {
        message: string;
        details?: string;
        currentStep?: string;
        expectedCall?: string;
        sessionId?: string;
        suggestedActions?: string[];
    };
    summary?: Record<string, unknown>;
    results?: unknown[];
    clientInstructions?: Record<string, unknown>;
}
/**
 * Error record for scan operations
 */
interface ScanError {
    resource: string;
    error: string;
    index: number;
    timestamp: string;
}
export type TransitionCapabilitySessionFn = (session: CapabilityScanSession, nextStep: CapabilityScanSession['currentStep'], updates: Partial<CapabilityScanSession>, args: CapabilityScanArgs) => void;
export type CleanupCapabilitySessionFn = (session: CapabilityScanSession, args: CapabilityScanArgs, logger: Logger, requestId: string) => void;
export type ParseNumericResponseFn = (response: string, validOptions: string[]) => string;
export type CreateCapabilityScanCompletionResponseFn = (sessionId: string, totalProcessed: number, successful: number, failed: number, processingTime: string, mode: 'auto' | 'manual', stopped?: boolean) => CapabilityScanResponse;
interface ProgressData {
    status: 'processing' | 'completed';
    current: number;
    total: number;
    percentage: number;
    currentResource: string;
    startedAt: string;
    lastUpdated: string;
    completedAt?: string;
    estimatedTimeRemaining?: string;
    totalProcessingTime?: string;
    successfulResources: number;
    failedResources: number;
    errors: ScanError[];
}
interface PrinterColumnDef {
    name: string;
    type: string;
    jsonPath: string;
    description?: string;
    priority?: number;
}
interface ResourceMetadata {
    apiVersion: string;
    version: string;
    group: string;
    resourcePlural: string;
    printerColumns?: PrinterColumnDef[];
}
interface CapabilityScanSession {
    sessionId: string;
    currentStep: 'resource-selection' | 'resource-specification' | 'scanning' | 'complete';
    selectedResources?: string[] | 'all';
    resourceList?: string;
    currentResourceIndex?: number;
    progress?: ProgressData;
    startedAt: string;
    lastActivity: string;
    resourceMetadata?: Record<string, ResourceMetadata>;
}
/**
 * Result of scanning a single resource
 */
interface ScanResourceResult {
    success: boolean;
    resource: string;
    id?: string;
    capabilities?: string[];
    providers?: string[];
    complexity?: string;
    confidence?: number;
    error?: string;
}
/**
 * Scan a single resource - fetches all data, runs AI inference, stores to DB
 * This is the core function that both full scan and targeted scan call for each resource.
 */
export declare function scanSingleResource(resourceName: string, discovery: KubernetesDiscovery, engine: CapabilityInferenceEngine, capabilityService: CapabilityVectorService, logger: Logger, requestId: string, interactionId?: string): Promise<ScanResourceResult>;
/**
 * Handle resource selection step
 */
export declare function handleResourceSelection(session: CapabilityScanSession, args: CapabilityScanArgs, logger: Logger, requestId: string, capabilityService: CapabilityVectorService, parseNumericResponse: ParseNumericResponseFn, transitionCapabilitySession: TransitionCapabilitySessionFn, cleanupCapabilitySession: CleanupCapabilitySessionFn, createCapabilityScanCompletionResponse: CreateCapabilityScanCompletionResponseFn, handleScanningFn: (session: CapabilityScanSession, args: CapabilityScanArgs, logger: Logger, requestId: string, capabilityService: CapabilityVectorService, parseNumericResponse: ParseNumericResponseFn, transitionCapabilitySession: TransitionCapabilitySessionFn, cleanupCapabilitySession: CleanupCapabilitySessionFn, createCapabilityScanCompletionResponse: CreateCapabilityScanCompletionResponseFn) => Promise<CapabilityScanResponse>): Promise<CapabilityScanResponse>;
/**
 * Handle resource specification step
 */
export declare function handleResourceSpecification(session: CapabilityScanSession, args: CapabilityScanArgs, logger: Logger, requestId: string, capabilityService: CapabilityVectorService, parseNumericResponse: ParseNumericResponseFn, transitionCapabilitySession: TransitionCapabilitySessionFn, cleanupCapabilitySession: CleanupCapabilitySessionFn, createCapabilityScanCompletionResponse: CreateCapabilityScanCompletionResponseFn, handleScanningFn: (session: CapabilityScanSession, args: CapabilityScanArgs, logger: Logger, requestId: string, capabilityService: CapabilityVectorService, parseNumericResponse: ParseNumericResponseFn, transitionCapabilitySession: TransitionCapabilitySessionFn, cleanupCapabilitySession: CleanupCapabilitySessionFn, createCapabilityScanCompletionResponse: CreateCapabilityScanCompletionResponseFn) => Promise<CapabilityScanResponse>): Promise<CapabilityScanResponse>;
/**
 * Handle scanning step (actual capability analysis - auto mode only)
 */
export declare function handleScanning(session: CapabilityScanSession, args: CapabilityScanArgs, logger: Logger, requestId: string, capabilityService: CapabilityVectorService, _parseNumericResponse: ParseNumericResponseFn, transitionCapabilitySession: TransitionCapabilitySessionFn, cleanupCapabilitySession: CleanupCapabilitySessionFn, createCapabilityScanCompletionResponse: CreateCapabilityScanCompletionResponseFn): Promise<CapabilityScanResponse>;
export {};
//# sourceMappingURL=capability-scan-workflow.d.ts.map