import { DomReplacement } from "../DomReplacement.js";
import { HtmlRR0Context } from "../../RR0Context.js";
import { CaseSummaryRenderer } from "../CaseSummaryRenderer.js";
import { RR0CaseSummary } from "./rr0/RR0CaseSummary.js";
import { RR0CaseMapping } from "./rr0/RR0CaseMapping.js";
/**
 * Replaces a (ul) tag from (chronology) files with case summaries from external datasources.
 */
export declare class ChronologyReplacer implements DomReplacement<HtmlRR0Context, HTMLUListElement> {
    protected mappings: RR0CaseMapping<any>[];
    protected renderer: CaseSummaryRenderer;
    /**
     * Remember already processed datasources.
     *
     * @protected
     */
    protected readonly done: Set<string>;
    constructor(mappings: RR0CaseMapping<any>[], renderer: CaseSummaryRenderer);
    replacement(context: HtmlRR0Context, element: HTMLUListElement): Promise<HTMLUListElement>;
    protected aggregate(context: HtmlRR0Context, element: HTMLUListElement): Promise<void>;
    protected aggregateDatasource(context: HtmlRR0Context, mapping: RR0CaseMapping<any>, existingCases: RR0CaseSummary[], casesToAdd: RR0CaseSummary[]): Promise<void>;
    protected merge(context: HtmlRR0Context, sourceCases: any[], fetchTime: Date, mapping: RR0CaseMapping<any>, existingCases: RR0CaseSummary[]): RR0CaseSummary[];
}
