/**
 * Kubernetes Discovery Module
 *
 * Handles cluster connection, resource discovery, and capability detection
 */
import { KubectlConfig } from './kubernetes-utils';
export interface ClusterInfo {
    type: string;
    version: string;
    capabilities: string[];
}
export interface ResourceMap {
    resources: EnhancedResource[];
    custom: EnhancedCRD[];
}
export interface CRD {
    name: string;
    group: string;
    version: string;
    schema: any;
}
export interface EnhancedCRD {
    name: string;
    group: string;
    version: string;
    kind: string;
    scope: 'Namespaced' | 'Cluster';
    versions: Array<{
        name: string;
        served: boolean;
        storage: boolean;
        schema?: any;
    }>;
    schema?: any;
}
export interface EnhancedResource {
    name: string;
    namespaced: boolean;
    kind: string;
    shortNames: string[];
    apiVersion: string;
    group: string;
}
export interface ResourceExplanation {
    kind: string;
    version: string;
    group: string;
    description: string;
    fields: Array<{
        name: string;
        type: string;
        description: string;
        required: boolean;
    }>;
}
export interface ClusterFingerprint {
    version: string;
    platform: string;
    nodeCount: number;
    namespaceCount: number;
    crdCount: number;
    capabilities: string[];
    features: {
        deployments: number;
        services: number;
        pods: number;
        configMaps: number;
        secrets: number;
    };
    networking: {
        cni: string;
        serviceSubnet: string;
        podSubnet: string;
        dnsProvider: string;
    };
    security: {
        rbacEnabled: boolean;
        podSecurityPolicy: boolean;
        networkPolicies: boolean;
        admissionControllers: string[];
    };
    storage: {
        storageClasses: string[];
        persistentVolumes: number;
        csiDrivers: string[];
    };
}
export interface KubernetesDiscoveryConfig {
    kubeconfigPath?: string;
}
export declare class KubernetesDiscovery {
    private kc;
    private k8sApi;
    private connected;
    private kubeconfigPath;
    constructor(config?: KubernetesDiscoveryConfig);
    /**
     * Resolves kubeconfig path following priority order:
     * 1. Custom path provided in constructor
     * 2. KUBECONFIG environment variable (first path if multiple)
     * 3. Default ~/.kube/config
     */
    private resolveKubeconfigPath;
    /**
     * Get the current kubeconfig path being used
     */
    getKubeconfigPath(): string;
    /**
     * Set a new kubeconfig path (will require reconnection)
     */
    setKubeconfigPath(newPath: string): void;
    connect(): Promise<void>;
    isConnected(): boolean;
    getClusterInfo(): Promise<ClusterInfo>;
    private detectClusterType;
    private detectCapabilities;
    discoverResources(): Promise<ResourceMap>;
    /**
     * Execute kubectl command with proper configuration
     */
    /**
     * Execute kubectl command with proper configuration
     * Delegates to shared utility function
     */
    executeKubectl(args: string[], config?: KubectlConfig): Promise<string>;
    discoverCRDs(options?: {
        group?: string;
    }): Promise<EnhancedCRD[]>;
    discoverCRDDetails(): Promise<CRD[]>;
    getAPIResources(options?: {
        group?: string;
    }): Promise<EnhancedResource[]>;
    explainResource(resource: string, options?: {
        field?: string;
    }): Promise<string>;
    fingerprintCluster(): Promise<ClusterFingerprint>;
    private getResourceCounts;
    private getNetworkingInfo;
    private getSecurityInfo;
    private getStorageInfo;
    private extractSubnet;
    getResourceSchema(_kind: string, _apiVersion: string): Promise<any>;
    getNamespaces(): Promise<string[]>;
    namespaceExists(namespace: string): Promise<boolean>;
    /**
     * Discover what capabilities a CRD provides by analyzing related resources
     */
    private discoverCRDCapabilities;
    /**
     * Find Compositions associated with this CRD
     */
    private discoverAssociatedCompositions;
    /**
     * Analyze what resources a Composition creates
     */
    private analyzeCompositionCapabilities;
    /**
     * Build an enhanced description that includes discovered capabilities
     */
    private buildEnhancedDescription;
}
//# sourceMappingURL=discovery.d.ts.map