import { PlaywrightConfigInfo } from '../utils/config-parser.util';
import { FileInfo } from '../types/azure.type';
export interface ReportDirectory {
    path: string;
    type: 'html' | 'traces' | 'mixed';
    files: FileInfo[];
    hasIndexHtml: boolean;
}
export interface DiscoveredReport {
    type: 'html' | 'json' | 'blob';
    found: boolean;
    path?: string;
    files?: FileInfo[];
    hasIndexHtml?: boolean;
    lastModified?: Date;
    size?: number;
}
export interface ReportDiscoveryResult {
    html: DiscoveredReport;
    json: DiscoveredReport;
    blob: DiscoveredReport;
    config: PlaywrightConfigInfo;
}
export interface DiscoveryOptions {
    rootDir: string;
    playwrightConfigPath?: string;
    useLatest?: boolean;
    includeTraces?: boolean;
}
/**
 * Comprehensive service for discovering and processing all types of Playwright reports
 */
export declare class ReportDiscoveryService {
    private rootDir;
    private playwrightConfigPath?;
    private configParser;
    private useLatest;
    private includeTraces;
    constructor(options: DiscoveryOptions);
    /**
     * Discovers all report types independently
     */
    discoverAllReports(): Promise<ReportDiscoveryResult>;
    /**
     * Legacy method: Discovers the main report directory to upload (for backward compatibility)
     */
    discoverReportDirectory(): Promise<ReportDirectory | null>;
    /**
     * Gets the JSON report file path
     */
    getJsonReportPath(): Promise<string | null>;
    /**
     * Gets the HTML report directory
     */
    getHtmlReportDirectory(): Promise<ReportDirectory | null>;
    /**
     * Discovers HTML reports using multiple strategies
     */
    private discoverHtmlReport;
    /**
     * Discovers JSON reports using multiple strategies
     */
    private discoverJsonReport;
    /**
     * Discovers Blob reports using multiple strategies
     */
    private discoverBlobReport;
    /**
     * Scans a directory for HTML reports
     */
    private scanHtmlDirectory;
    /**
     * Scans for a JSON report file
     */
    private scanJsonFile;
    /**
     * Scans a directory for Blob reports
     */
    private scanBlobDirectory;
    /**
     * Searches for HTML reports using patterns
     */
    private searchHtmlByPattern;
    /**
     * Searches for JSON reports using patterns
     */
    private searchJsonByPattern;
    /**
     * Recursively scans directory and collects file information
     */
    private scanDirectoryRecursive;
    /**
     * Gets content type for a file
     */
    private getContentType;
    /**
     * Gets the latest file by modification time
     */
    private getLatestFile;
    /**
     * Gets default HTML report directories
     */
    private getDefaultHtmlDirectories;
    /**
     * Gets default JSON report files
     */
    private getDefaultJsonFiles;
    /**
     * Gets default JSON report directories for pattern search
     */
    private getDefaultJsonDirectories;
    /**
     * Gets default Blob report directories
     */
    private getDefaultBlobDirectories;
    /**
     * Aggressive search for JSON files in any reasonable location
     */
    private aggressiveJsonSearch;
    /**
     * Aggressive search for HTML reports in any reasonable location
     */
    private aggressiveHtmlSearch;
    /**
     * Validates if a JSON file is a Playwright report
     */
    private validatePlaywrightJsonReport;
    /**
     * Checks if directory exists
     */
    private directoryExists;
    /**
     * Validates files against allowed types for upload
     */
    validateFiles(files: FileInfo[], allowedTypes: string[]): FileInfo[];
    /**
     * Gets total size of files
     */
    getTotalSize(files: FileInfo[]): number;
    /**
     * Filters files by maximum size
     */
    filterFilesBySize(files: FileInfo[], maxTotalSize: number): FileInfo[];
}
export default ReportDiscoveryService;
