import { HtmlRR0Context } from "../RR0Context.js";
import { SourceFactory, SourceRenderer } from "../source/index.js";
import { NoteRenderer } from "../note/index.js";
import { TimeElementFactory } from "./html/TimeElementFactory.js";
import { RR0Data, RR0Event, RR0SourceType, Source } from "@rr0/data";
import { PlaceRenderer } from "../place/PlaceRenderer.js";
import { Place } from "@rr0/place";
import { TimeRenderOptions } from "./html/index.js";
/**
 * Render a case summary as HTML.
 */
export declare class EventRenderer<E extends RR0Event> {
    protected noteRenderer: NoteRenderer;
    protected sourceFactory: SourceFactory;
    readonly sourceRenderer: SourceRenderer;
    protected timeElementFactory: TimeElementFactory;
    placeRenderer: PlaceRenderer;
    constructor(noteRenderer: NoteRenderer, sourceFactory: SourceFactory, sourceRenderer: SourceRenderer, timeElementFactory: TimeElementFactory);
    placeElement(context: HtmlRR0Context, place: Place): HTMLSpanElement;
    renderEnd(context: HtmlRR0Context, event: RR0Data, container: HTMLElement): Promise<void>;
    render(context: HtmlRR0Context, event: E, container: HTMLElement, options?: TimeRenderOptions): Promise<void>;
    renderNotes(context: HtmlRR0Context, notes: string[], container: HTMLElement): Promise<void>;
    renderSources(context: HtmlRR0Context, sources: Source<RR0SourceType>[], container: HTMLElement): Promise<void>;
}
