import { HtmlTagDescriptor, Plugin, PluginOption } from 'vite';
import { Options as Options$1 } from 'html-minifier-terser';
import { Options as Options$2 } from 'ejs';

interface InjectOptions {
    data?: Record<string, any>;
    tags?: HtmlTagDescriptor[];
    ejsOptions?: Options$2;
}
type PageOptions = {
    template?: string;
    title?: string;
    entry?: string;
    filename?: string;
    urlParams?: string;
    inject?: InjectOptions;
    addEntryScript?: boolean;
    mpaAutoAddMainTs?: boolean;
    onlyUseEjsAndMinify?: boolean;
};
interface Options extends PageOptions {
    pagesDir: string;
    pages: {
        [pageName: string]: PageOptions;
    };
    entry?: string;
    jumpTarget?: '_self' | '_blank';
    buildCfg: {
        buildPrefixName?: string;
        moveHtmlTop?: boolean;
        moveHtmlDirTop?: boolean;
        htmlHash?: boolean;
        buildAssetDirName?: string;
        buildChunkDirName?: string;
        buildEntryDirName?: string;
        htmlPrefixSearchValue?: string;
        htmlPrefixReplaceValue?: string;
    };
    minify?: Options$1 | boolean;
}
type HtmlTemplateMpaOptions = Partial<Options>;

declare function htmlTemplate(userOptions?: HtmlTemplateMpaOptions): Plugin;
declare function createMinifyHtmlPlugin(userOptions?: HtmlTemplateMpaOptions): {
    name: string;
    enforce: string;
    configResolved(resolvedConfig: any): void;
    generateBundle(_: any, bundle: any): Promise<void>;
};

declare function createHtmlPlugin(userOptions?: HtmlTemplateMpaOptions): PluginOption[];

export { type HtmlTemplateMpaOptions, createMinifyHtmlPlugin, createHtmlPlugin as default, htmlTemplate };
