import { DiscoveryEntry, DiscoveryMetadata, ToolRegistryEntry, PromptRegistryEntry, VersionInfo } from './types.js';
import { VersionManager } from './VersionManager.js';
/**
 * Query options for filtering discovery results
 */
export interface DiscoveryQuery {
    type?: 'tool' | 'prompt' | 'all';
    tags?: string[];
    author?: string;
    deprecated?: boolean;
    versionRange?: string;
    searchText?: string;
    limit?: number;
    offset?: number;
    sortBy?: 'name' | 'version' | 'created' | 'updated';
    sortOrder?: 'asc' | 'desc';
}
/**
 * Discovery result with pagination information
 */
export interface DiscoveryResult {
    entries: DiscoveryEntry[];
    metadata: DiscoveryMetadata;
    pagination: {
        total: number;
        limit: number;
        offset: number;
        hasMore: boolean;
    };
}
/**
 * Service for discovering and exploring available tools and prompts
 */
export declare class DiscoveryService {
    private readonly versionManager;
    constructor(versionManager?: VersionManager);
    /**
     * Discover tools and prompts based on query criteria
     */
    discover(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, query?: DiscoveryQuery): DiscoveryResult;
    /**
     * Search for tools and prompts by text
     */
    search(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, searchText: string, options?: Omit<DiscoveryQuery, 'searchText'>): DiscoveryResult;
    /**
     * Get tools and prompts by specific tags
     */
    getByTags(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, tags: string[], options?: Omit<DiscoveryQuery, 'tags'>): DiscoveryResult;
    /**
     * Get tools and prompts by author
     */
    getByAuthor(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, author: string, options?: Omit<DiscoveryQuery, 'author'>): DiscoveryResult;
    /**
     * Get compatible tools and prompts for a specific version
     */
    getCompatibleEntries(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, targetVersion: VersionInfo, options?: DiscoveryQuery): DiscoveryResult;
    /**
     * Get recently created or updated entries
     */
    getRecent(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, days?: number, options?: DiscoveryQuery): DiscoveryResult;
    /**
     * Get deprecated entries
     */
    getDeprecated(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>, options?: Omit<DiscoveryQuery, 'deprecated'>): DiscoveryResult;
    /**
     * Get available categories (tags)
     */
    getCategories(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>): string[];
    /**
     * Get statistics about available entries
     */
    getStatistics(toolEntries: Map<string, ToolRegistryEntry>, promptEntries: Map<string, PromptRegistryEntry>): {
        tools: number;
        prompts: number;
        total: number;
        deprecated: number;
        categories: number;
        authors: number;
        averageVersion: string;
        latestVersion: string;
    };
    private applyFilters;
    private applySorting;
    private convertToDiscoveryEntries;
    private generateDiscoveryMetadata;
}
//# sourceMappingURL=DiscoveryService.d.ts.map