import { FileCoverageResult, CovInfo, FunctionCoverageResult, SourceFunctionInfo, InstrumentResult } from "../interface.js";
export declare class Parser {
    fileCoverageResults: FileCoverageResult[];
    functionCoverageResults: FunctionCoverageResult[];
    /** key: functionName, value: CodeSnippetIndex trace */
    functionCovTraceMap: Map<string, number[]>;
    /** key: functionName, value: { branchInfo, lineInfo } */
    functionCovInfoMap: Map<string, CovInfo>;
    parse(instrumentResults: InstrumentResult[], sourceFunctions: Map<string, SourceFunctionInfo[]>): Promise<FileCoverageResult[]>;
    private getTempCovTraceMap;
    private getDebugInfos;
    /**
     * @brief
     * parse debugInfo and traceInfo to functionCovTraceMap and functionCovInfoMap
     * @param debugInfoFile debugInfo file path generated by instrumenter
     */
    traceParse(instrumentResult: InstrumentResult): Promise<void>;
    /**
     * @brief
     * generate FunctionCoverageInfo for each Function based on CovTrace and CovInfo.
     * FunctionCoverageInfo of Function<T> will be merged into Function:
     * FunctionCoverageInfo of toJson<f64> and toJson<i32> will be merged into toJson.
     */
    generateFunctionCoverage(): void;
    /**
     * @brief
     * For each sourceFile:
     *  First, filter out all functionCoverageResult from this.functionCoverageResults based on checkFunctionName(sourceFilePath, functionName).
     *  And then, find out which sourceFunction has been tested and which sourceFunction has not been tested.
     *    based on the function name match or lineRange match.
     *  Finally, merge the functionCoverageResult to fileCoverageResult.
     * @param sourceFunctions functionInfo of source file generated by transform.
     */
    generateFileCoverage(sourceFunctions: Map<string, SourceFunctionInfo[]>): Promise<void>;
}
//# sourceMappingURL=index.d.ts.map