/**
 * Discovery Types
 *
 * Type definitions for plugin discovery functionality.
 *
 * @since v1.66.4
 */
import type { RegistryPlugin } from '../../registry/registry-types.js';
import type { CuratedCollection } from '../recommendation-types.js';
/**
 * Discovery section types
 */
export type DiscoverySectionType = 'new' | 'trending' | 'staff_picks' | 'for_you' | 'category' | 'explore';
/**
 * A discovery section
 */
export interface DiscoverySection {
    /** Section type */
    type: DiscoverySectionType;
    /** Section title */
    title: string;
    /** Section subtitle/description */
    subtitle?: string;
    /** Icon for the section */
    icon: string;
    /** Plugins in this section */
    plugins: DiscoveryItem[];
    /** Related collection if applicable */
    collection?: CuratedCollection;
    /** Category if category-based */
    category?: string;
    /** Whether section is expanded */
    expanded?: boolean;
}
/**
 * A discoverable plugin item
 */
export interface DiscoveryItem {
    /** The plugin */
    plugin: RegistryPlugin;
    /** Why this plugin is being shown */
    reason: string;
    /** Badge text (e.g., "New!", "Trending") */
    badge?: string;
    /** Badge type for styling */
    badgeType?: 'new' | 'trending' | 'popular' | 'recommended';
    /** Growth rate if trending */
    growthRate?: number;
    /** Position in trending list */
    trendingRank?: number;
    /** Is this saved/wishlisted */
    saved?: boolean;
}
/**
 * User discovery preferences
 */
export interface DiscoveryPreferences {
    /** Preferred categories to show */
    preferredCategories: string[];
    /** Categories to hide */
    hiddenCategories: string[];
    /** Saved/wishlisted plugin IDs */
    savedPlugins: Set<string>;
    /** Hidden plugin IDs (don't show again) */
    hiddenPlugins: Set<string>;
    /** Show curated collections */
    showCurated: boolean;
    /** Show trending section */
    showTrending: boolean;
    /** Show new plugins section */
    showNew: boolean;
    /** Number of items per section */
    itemsPerSection: number;
}
/**
 * Discovery feed result
 */
export interface DiscoveryFeed {
    /** All sections to display */
    sections: DiscoverySection[];
    /** Total plugins across all sections */
    totalPlugins: number;
    /** Generation timestamp */
    generatedAt: number;
    /** Context that generated this feed */
    context: {
        installedCategories: string[];
        installedTags: string[];
    };
}
/**
 * New plugin criteria
 */
export interface NewPluginCriteria {
    /** Maximum days since creation */
    maxDaysOld: number;
    /** Minimum downloads to include */
    minDownloads: number;
    /** Minimum rating to include */
    minRating: number;
}
/**
 * Trending plugin criteria
 */
export interface TrendingCriteria {
    /** Minimum growth rate (e.g., 1.5 = 50% growth) */
    minGrowthRate: number;
    /** Time period for growth calculation (days) */
    periodDays: number;
    /** Minimum downloads to be considered */
    minDownloads: number;
}
/**
 * Default discovery preferences
 */
export declare const DEFAULT_DISCOVERY_PREFERENCES: DiscoveryPreferences;
/**
 * Default new plugin criteria
 */
export declare const DEFAULT_NEW_CRITERIA: NewPluginCriteria;
/**
 * Default trending criteria
 */
export declare const DEFAULT_TRENDING_CRITERIA: TrendingCriteria;
/**
 * Section icons
 */
export declare const SECTION_ICONS: Record<DiscoverySectionType, string>;
//# sourceMappingURL=discovery-types.d.ts.map