/**
 * External Items Counter - OPTIMIZED FOR SCALE
 *
 * Three-tier architecture for 1000+ items:
 *
 * TIER 1: getCounts() - Super fast, counts only, 30min cache
 *         Used by: sw:status, progress footer
 *         API calls: 1 per provider (just count)
 *
 * TIER 2: getSummary() - Project breakdown, 15min cache
 *         Used by: sw:external overview
 *         API calls: 1 per provider (count + project grouping)
 *
 * TIER 3: getItems(filter) - Paginated details, on-demand
 *         Used by: sw:external --project X --limit 20
 *         API calls: 1 per request (paginated)
 */
import { Logger } from '../../utils/logger.js';
import { ExternalItemsCounts, ExternalItemsSummary, ItemsFilter, PaginatedItemsResult } from './types.js';
export interface ExternalItemsCounterOptions {
    projectRoot: string;
    logger?: Logger;
    forceRefresh?: boolean;
}
export declare class ExternalItemsCounter {
    private projectRoot;
    private cache;
    private logger;
    private forceRefresh;
    constructor(options: ExternalItemsCounterOptions);
    /**
     * Get counts only - optimized for status display
     * Single API call per provider, 30min cache
     */
    getCounts(): Promise<ExternalItemsCounts>;
    /**
     * Get summary with project breakdown - for dashboard overview
     * Note: For simplicity, uses counts (no per-project breakdown without fetching items)
     */
    getSummary(): Promise<ExternalItemsSummary>;
    /**
     * Get paginated items - on-demand, no cache
     * Used when user drills down: sw:external --limit 20
     */
    getItems(filter?: ItemsFilter): Promise<PaginatedItemsResult>;
    /**
     * Force refresh all caches
     */
    refresh(): Promise<ExternalItemsCounts>;
    private getGitHubCount;
    private getJiraCount;
    private getAdoCount;
    private getGitHubItems;
    private getJiraItems;
    private getAdoItems;
    /**
     * Build project breakdown from counts
     * Note: Without fetching all items, we can only show totals per provider
     */
    private buildProjectBreakdown;
}
//# sourceMappingURL=external-items-counter.d.ts.map