import { Marpit, Options, RenderResult } from '@marp-team/marpit';
import { OutlinePage } from '../engine/pdf/outline-plugin';
import { EngineTransition } from '../engine/transition-plugin';
type RendererResult = RenderResult & TemplateMeta & {
    length: number;
    size: RenderedSize;
    transition?: EngineTransition;
    outline?: OutlinePage[];
};
interface TemplateRendererOptions extends Options {
    modifier?: (marpit: Marpit) => void;
}
interface TemplateCoreOption {
    base?: string;
    notifyWS?: string;
    renderer: (tplOpts: TemplateRendererOptions) => RendererResult | Promise<RendererResult>;
}
export interface TemplateMeta {
    author: string | undefined;
    description: string | undefined;
    image: string | undefined;
    keywords: string[] | undefined;
    title: string | undefined;
    url: string | undefined;
    lang: string | undefined;
}
interface RenderedSize {
    height: number;
    width: number;
}
export type TemplateOption = TemplateBareOption | TemplateBespokeOption;
interface TemplateBareOption {
}
interface TemplateBespokeOption {
    osc?: boolean;
    progress?: boolean;
    transition?: boolean;
}
export interface TemplateResult {
    rendered: RendererResult;
    result: string;
}
export type Template<T = TemplateOption> = ((locals: TemplateCoreOption & T) => Promise<TemplateResult>) & {
    printable?: boolean;
};
export declare const bare: Template<TemplateBareOption>;
export declare const bespoke: Template<TemplateBespokeOption>;
declare const _default: {
    bare: Template<TemplateBareOption>;
    bespoke: Template<TemplateBespokeOption>;
};
export default _default;
