/**
 * Extension Discovery Service
 * Handles auto-discovery, unpacking, and validation of DXT extensions
 */
import { ExtensionMetadata, HypertoolConfig, ExtensionRuntimeConfig } from "../config/dxt-config.js";
/**
 * Extension discovery and management service
 */
export declare class ExtensionDiscoveryService {
    private readonly extensionsDir;
    private readonly installedDir;
    private readonly metadataFile;
    private metadata;
    constructor(baseDir?: string);
    /**
     * Initialize the extensions directory structure
     */
    initialize(): Promise<void>;
    /**
     * Discover all DXT files in the extensions directory
     */
    discoverExtensions(): Promise<string[]>;
    /**
     * Discover already-installed extensions in the installed directory
     */
    discoverInstalledExtensions(): Promise<string[]>;
    /**
     * Check if an extension needs to be unpacked or re-unpacked
     */
    needsUnpacking(dxtPath: string): Promise<boolean>;
    /**
     * Unpack a DXT extension to the installed directory
     */
    unpackExtension(dxtPath: string): Promise<ExtensionMetadata>;
    /**
     * Get extension metadata by filename (without .dxt extension)
     */
    getExtensionMetadata(filename: string): ExtensionMetadata | undefined;
    /**
     * Get all extension metadata
     */
    getAllMetadata(): Record<string, ExtensionMetadata>;
    /**
     * Load runtime configurations for all extensions
     */
    loadExtensionConfigs(config: HypertoolConfig): Promise<ExtensionRuntimeConfig[]>;
    /**
     * Validate extension configuration against manifest user_config schema
     */
    private validateExtensionConfig;
    /**
     * Validate parameter type
     */
    private validateParameterType;
    /**
     * Validate single value type
     */
    private validateSingleType;
    /**
     * Build server configuration with template substitution
     */
    private buildServerConfig;
    /**
     * Substitute template variables in environment variables
     */
    private substituteTemplates;
    /**
     * Substitute template variables in a string
     */
    private substituteTemplateString;
    /**
     * Extract DXT to installed directory instead of temp
     */
    private extractToInstalled;
    /**
     * Remove directory recursively
     */
    private removeDirectory;
    /**
     * Load metadata from file
     */
    private loadMetadata;
    /**
     * Save metadata to file
     */
    private saveMetadata;
}
//# sourceMappingURL=discovery.d.ts.map