import { HtmlRR0Context } from "../RR0Context.js";
import { HttpSource } from "../time/datasource/HttpSource.js";
import { TimeService } from "../time/TimeService.js";
import { AllDataService, RR0SourceType, Source } from "@rr0/data";
/**
 * Create Source objects.
 */
export declare class SourceFactory {
    protected dataService: AllDataService;
    protected http: HttpSource;
    protected baseUrl: string;
    protected options: Intl.DateTimeFormatOptions;
    protected time: TimeService;
    constructor(dataService: AllDataService, http: HttpSource, baseUrl: string, options: Intl.DateTimeFormatOptions, time: TimeService);
    /**
     * Create a Source object from an anchor's URL.
     *
     * @param context
     * @param href The anchor's URL string.
     */
    create(context: HtmlRR0Context, href: string): Promise<Source<RR0SourceType>>;
    /**
     * Create a Source object from a link referencing an internal page of the site.
     *
     * @param context
     * @param href
     */
    createInternal(context: HtmlRR0Context, href: string): Promise<Source<RR0SourceType>>;
    /**
     * Create a Source object from a link referencing a page outside the site.
     *
     * @param context
     * @param href
     */
    createExternal(context: HtmlRR0Context, href: string): Promise<Source<RR0SourceType>>;
    fromPage(href: string, hash?: string): Promise<Source<RR0SourceType>>;
}
