/**
 * Filter Service
 *
 * Core filter logic for applying and managing filters.
 *
 * @since v1.26.0
 */
import { type ActiveFilters, type FilterCategory, type FilterableItem, type PluginStatus } from './filter-types.js';
/**
 * Get plugin status for filtering
 */
export declare function getPluginStatus(item: FilterableItem): PluginStatus;
/**
 * Check if item matches search query
 */
export declare function matchesSearch(item: FilterableItem, query: string): boolean;
/**
 * Filter service class
 */
export declare class FilterService {
    private filters;
    constructor(initialFilters?: Partial<ActiveFilters>);
    /**
     * Toggle a filter on/off
     */
    toggle(category: FilterCategory, id: string): void;
    /**
     * Set filters for a category (replace)
     */
    set(category: FilterCategory, ids: string[]): void;
    /**
     * Clear filters
     */
    clear(category?: FilterCategory): void;
    /**
     * Set search query
     */
    setSearchQuery(query: string): void;
    /**
     * Check if a filter is active
     */
    isActive(category: FilterCategory, id: string): boolean;
    /**
     * Check if any filters are active
     */
    hasActiveFilters(): boolean;
    /**
     * Get current filters
     */
    getFilters(): ActiveFilters;
    /**
     * Apply filters to a list of items
     */
    apply<T extends FilterableItem>(items: T[]): T[];
    /**
     * Get summary text for active filters
     */
    getSummary(): string;
    /**
     * Get count of active filters
     */
    getActiveCount(): number;
    /**
     * Serialize for storage
     */
    serialize(): string;
    /**
     * Deserialize from storage
     */
    deserialize(data: string): void;
    /**
     * Load from serialized data
     */
    static fromSerialized(data: string): FilterService;
}
/**
 * Count items by status
 */
export declare function countByStatus<T extends FilterableItem>(items: T[]): Map<PluginStatus, number>;
/**
 * Count items by source
 */
export declare function countBySource<T extends FilterableItem>(items: T[]): Map<string, number>;
/**
 * Count items by category
 */
export declare function countByCategory<T extends FilterableItem>(items: T[]): Map<string, number>;
//# sourceMappingURL=filter-service.d.ts.map