import { HtmlRR0Context } from "../../RR0Context.js";
import { Level2Date as EdtfDate } from "@rr0/time";
import { TimeTextBuilder } from "../text/TimeTextBuilder.js";
import { RR0CaseMapping } from "./rr0/index.js";
import { RR0SourceType, Source } from "@rr0/data";
import { PlaceRenderer } from "../../place/PlaceRenderer.js";
export declare abstract class DatasourceTestCase<S> {
    readonly mapping: RR0CaseMapping<S>;
    readonly sourceCases: S[];
    protected readonly intlOptions: Intl.DateTimeFormatOptions;
    timeTextBuilder: TimeTextBuilder;
    placeRenderer: PlaceRenderer;
    protected constructor(mapping: RR0CaseMapping<S>, sourceCases: S[], intlOptions?: Intl.DateTimeFormatOptions);
    checkCaseHTML(context: HtmlRR0Context, nativeCase: S, item: HTMLLIElement, dataDate: Date): void;
    testRender(context: HtmlRR0Context): Promise<void>;
    testFetch(context: HtmlRR0Context): Promise<void>;
    protected abstract sortComparator(c1: S, c2: S): number;
    protected abstract getTime(c: S): EdtfDate;
    protected expectedSourceStr(context: HtmlRR0Context, expectedSources: Source<RR0SourceType>[], nativeCase: S): string;
}
