import type { MarpOptions } from '@marp-team/marp-core';
import { Options as MarpitOptions } from '@marp-team/marpit';
import type { Browser } from './browser/browser';
import type { BrowserManager } from './browser/manager';
import { Engine } from './engine';
import { File } from './file';
import { SOffice } from './soffice/soffice';
import { Template, TemplateMeta, TemplateOption, TemplateResult } from './templates/';
import { ThemeSet } from './theme';
import { type WatchNotifierEntrypointType } from './watcher';
export declare enum ConvertType {
    html = "html",
    pdf = "pdf",
    png = "png",
    pptx = "pptx",
    jpeg = "jpg",
    notes = "notes"
}
export declare const mimeTypes: {
    html: string;
    pdf: string;
    png: string;
    pptx: string;
    jpg: string;
    notes: string;
};
export interface ConverterOption {
    allowLocalFiles: boolean;
    baseUrl?: string;
    browserManager: BrowserManager;
    engine: Engine;
    globalDirectives: {
        theme?: string;
    } & Partial<TemplateMeta>;
    html?: MarpOptions['html'];
    imageScale?: number;
    inputDir?: string;
    lang: string;
    options: MarpitOptions;
    output?: string | false;
    pages?: boolean | number[];
    parallel?: number;
    pdfNotes?: boolean;
    pdfOutlines?: false | {
        pages: boolean;
        headings: boolean;
    };
    pptxEditable?: boolean;
    preview?: boolean;
    jpegQuality?: number;
    server?: boolean;
    template: string;
    templateOption?: TemplateOption;
    themeSet: ThemeSet;
    type: ConvertType;
    watch: boolean | WatchNotifierEntrypointType;
}
export interface ConvertFileOption {
    onConverted?: ConvertedCallback;
    onlyScanning?: boolean;
}
export interface ConvertPDFOption {
    postprocess?: boolean;
}
export interface ConvertImageOption {
    pages?: boolean | number[];
    quality?: number;
    scale?: number;
    type: ConvertType.png | ConvertType.jpeg;
}
export interface ConvertResult {
    file: File;
    newFile?: File;
    template: TemplateResult;
}
export type ConvertedCallback = (result: ConvertResult) => void;
export declare class Converter {
    readonly options: ConverterOption;
    private _sOffice;
    private _firefoxPDFConversionWarning;
    private _experimentalEditablePPTXWarning;
    constructor(opts: ConverterOption);
    get browser(): Promise<Browser>;
    get template(): Template;
    get sOffice(): SOffice;
    convert(markdown: string, file?: File, { fallbackToPrintableTemplate, }?: {
        fallbackToPrintableTemplate?: boolean;
    }): Promise<TemplateResult>;
    convertFile(file: File, opts?: ConvertFileOption): Promise<ConvertResult>;
    convertFiles(files: File[], opts?: ConvertFileOption): Promise<void>;
    private convertFileToHTML;
    private convertFileToNotes;
    private convertFileToPDF;
    private convertFileToImage;
    private convertFileToPPTX;
    private convertFileToEditablePPTX;
    private generateEngine;
    private usePuppeteer;
    private trackFailedLocalFileAccess;
}
