/**
 * AdoDependencyLoader - Three-Tier Dependency Loading for Azure DevOps
 *
 * Architecture (ADR-0056):
 * - Tier 1 (Init): Metadata only (< 5 seconds, 1 API call)
 * - Tier 2 (On-Demand): Lazy loading per project (2-5 seconds, 3-4 API calls)
 * - Tier 3 (Bulk): Optional pre-load command (1-2 minutes for 50 projects)
 *
 * Features:
 * - 24-hour TTL caching via CacheManager
 * - Rate limit detection (ADO: 200 req/hour, stricter than JIRA)
 * - Per-project dependency caching
 * - Automatic cache invalidation on 404 errors
 *
 * @module integrations/ado/ado-dependency-loader
 */
import { CacheManager } from '../../core/cache/cache-manager.js';
import { RateLimitChecker } from '../../core/cache/rate-limit-checker.js';
import { AdoClient } from './ado-client.js';
import { Logger } from '../../utils/logger.js';
/**
 * Project metadata (Tier 1)
 */
export interface AdoProjectMetadata {
    id: string;
    name: string;
    description?: string;
    visibility: string;
    state: string;
}
/**
 * Project dependencies (Tier 2)
 */
export interface AdoProjectDependencies {
    projectId: string;
    projectName: string;
    areaPaths: Array<{
        id: number;
        name: string;
        path: string;
        hasChildren?: boolean;
        children?: any[];
    }>;
    teams: Array<{
        id: string;
        name: string;
        description?: string;
    }>;
    lastUpdated: string;
}
/**
 * AdoDependencyLoader - Three-tier dependency loading with smart caching
 */
export declare class AdoDependencyLoader {
    private cacheManager;
    private rateLimitChecker;
    private adoClient;
    private logger;
    constructor(options: {
        adoClient: AdoClient;
        cacheManager: CacheManager;
        rateLimitChecker?: RateLimitChecker;
        logger?: Logger;
    });
    /**
     * Tier 1: Load project metadata only (init)
     *
     * Performance: < 5 seconds for 50 projects (1 API call)
     * Cache: 24-hour TTL in `ado-projects.json`
     *
     * @param maxProjects Maximum projects to load (default: 50)
     * @returns Array of project metadata
     */
    loadProjectMetadata(maxProjects?: number): Promise<AdoProjectMetadata[]>;
    /**
     * Tier 2: Load dependencies for specific project (on-demand)
     *
     * Performance: 2-5 seconds per project (3-4 API calls, cached)
     * Cache: 24-hour TTL in `ado-{PROJECT}-deps.json`
     *
     * @param projectName Project name or ID
     * @returns Project dependencies
     */
    loadProjectDependencies(projectName: string): Promise<AdoProjectDependencies>;
    /**
     * Tier 3: Bulk pre-load all dependencies (optional command)
     *
     * Performance: 1-2 minutes for 50 projects (150-200 API calls, batched)
     * Progress: Real-time progress tracking with ProgressTracker, cancelation with CancelationHandler
     *
     * @param projectNames Array of project names to preload
     * @returns void (results cached)
     */
    preloadAllDependencies(projectNames: string[], options?: {
        onProgress?: (current: number, total: number) => void;
        signal?: AbortSignal;
    }): Promise<void>;
}
//# sourceMappingURL=ado-dependency-loader.d.ts.map