import { Dump } from '../Dump.js';
type renderType = 'auto' | 'desktop' | 'mobile' | 'specific';
type renderName = 'VisualEditor' | 'WikimediaDesktop' | 'WikimediaMobile' | 'RestApi';
interface RendererBuilderOptionsBase {
    renderType: renderType;
}
interface RendererBuilderOptionsCommon {
    renderType: renderType;
    renderName?: never;
}
interface RendererBuilderOptionsSpecific extends RendererBuilderOptionsBase {
    renderType: 'specific';
    renderName: renderName;
}
export type RendererBuilderOptions = RendererBuilderOptionsCommon | RendererBuilderOptionsSpecific;
export interface RenderOpts {
    data?: any;
    _moduleDependencies: any;
    articleId?: string;
    articleDetailXId?: RKVS<ArticleDetail>;
    articleDetail?: ArticleDetail;
    isMainPage?: boolean;
    dump: Dump;
}
export interface RenderSingleOutput {
    articleId: string;
    displayTitle: string;
    html: string;
    imageDependencies: any;
    videoDependencies: any;
    mediaDependencies: any;
    moduleDependencies: any;
    staticFiles: string[];
    subtitles: any;
}
export type RenderOutput = RenderSingleOutput[];
export declare abstract class Renderer {
    staticFilesListCommon: string[];
    constructor();
    protected treatVideo(dump: Dump, srcCache: KVS<boolean>, articleId: string, videoEl: DominoElement): Promise<{
        imageDependencies: string[];
        videoDependencies: string[];
        subtitles: string[];
    }>;
    private adjustVideoElementAttributes;
    private chooseBestVideoSource;
    private handleVideoPoster;
    private updateVideoSrc;
    protected treatSubtitle(trackEle: DominoElement, articleId: string): Promise<string>;
    private treatImageFrames;
    private treatImage;
    private shouldKeepImage;
    protected treatMedias(parsoidDoc: DominoElement, dump: Dump, articleId: string): Promise<{
        doc: any;
        imageDependencies: string[];
        videoDependencies: string[];
        subtitles: string[];
    }>;
    private isStillLinked;
    private shouldKeepNode;
    private makeThumbDiv;
    processHtml(html: string, dump: Dump, articleId: string, articleDetail: any, _moduleDependencies: any, callback: any): Promise<{
        finalHTML: string;
        mediaDependencies: {
            url: string;
            path: string;
        }[];
        imageDependencies: {
            url: string;
            path: string;
        }[];
        videoDependencies: {
            url: string;
            path: string;
        }[];
        subtitles: {
            url: string;
            path: string;
        }[];
    }>;
    private mergeTemplateDoc;
    private addNoIndexCommentToElement;
    private isSubpage;
    private clearLinkAndInputTags;
    private clearNodes;
    private applyOtherTreatments;
    /**
     * Add an H1 tag with page title on top of article except main page
     */
    protected injectH1TitleToHtml(content: string, articleDetail: any): string;
    abstract render(renderOpts: RenderOpts): Promise<any>;
}
export {};
