/**
 * JIRA Filter Processor
 *
 * Smart filtering for JIRA projects with active/archived, type, lead, and JQL support.
 *
 * Enables selective project imports with filter presets
 *
 * @module integrations/jira/filter-processor
 */
import { JiraClient } from './jira-client.js';
import type { Logger } from '../../utils/logger.js';
export interface FilterOptions {
    active?: boolean;
    types?: string[];
    lead?: string;
    jql?: string;
    excludeArchived?: boolean;
}
export interface FilterPreset {
    name: string;
    description: string;
    filters: FilterOptions;
}
export interface JiraProject {
    id: string;
    key: string;
    name: string;
    projectTypeKey?: string;
    lead?: {
        displayName: string;
        emailAddress: string;
    };
    archived?: boolean;
    [key: string]: any;
}
/**
 * Filter processor for JIRA projects
 */
export declare class FilterProcessor {
    private client;
    private logger;
    private presets;
    constructor(client: JiraClient, options?: {
        logger?: Logger;
    });
    /**
     * Initialize default filter presets
     */
    private initializeDefaultPresets;
    /**
     * Add custom filter preset
     */
    addPreset(preset: FilterPreset): void;
    /**
     * Get filter preset by name
     */
    getPreset(name: string): FilterPreset | undefined;
    /**
     * List all available presets
     */
    listPresets(): FilterPreset[];
    /**
     * Apply filters to project list
     *
     * @param projects - List of JIRA projects
     * @param options - Filter options
     * @returns Filtered project list
     */
    applyFilters(projects: JiraProject[], options: FilterOptions): Promise<JiraProject[]>;
    /**
     * Filter active/archived projects
     *
     * @param projects - Project list
     * @param activeOnly - If true, return only active projects
     * @returns Filtered projects
     */
    filterActive(projects: JiraProject[], activeOnly?: boolean): JiraProject[];
    /**
     * Filter by project type
     *
     * @param projects - Project list
     * @param types - Allowed types (e.g., 'software', 'business', 'service_desk')
     * @returns Filtered projects
     */
    filterByType(projects: JiraProject[], types: string[]): JiraProject[];
    /**
     * Filter by project lead
     *
     * @param projects - Project list
     * @param leadEmail - Lead email or display name
     * @returns Filtered projects
     */
    filterByLead(projects: JiraProject[], leadEmail: string): JiraProject[];
    /**
     * Filter by custom JQL
     *
     * Uses JIRA Search API to execute JQL query
     *
     * @param projects - Original project list
     * @param jql - JQL query string
     * @returns Projects matching JQL
     */
    filterByJql(projects: JiraProject[], jql: string): Promise<JiraProject[]>;
    /**
     * Preview filter results
     *
     * @param projects - Project list
     * @param options - Filter options
     * @returns Preview summary
     */
    previewFilters(projects: JiraProject[], options: FilterOptions): Promise<{
        original: number;
        filtered: number;
        reduction: number;
        preview: string;
    }>;
    /**
     * Load preset and apply filters
     *
     * @param projects - Project list
     * @param presetName - Preset name
     * @returns Filtered projects
     */
    applyPreset(projects: JiraProject[], presetName: string): Promise<JiraProject[]>;
}
//# sourceMappingURL=filter-processor.d.ts.map