/// <reference types="node" />
import { IArgdownRequest, IArgdownResponse, IArgdownLogger } from "@argdown/core";
import { IAsyncArgdownPlugin, IAsyncRequestHandler } from "../IAsyncArgdownPlugin";
export interface IFileNameProvider {
    (settings: ISaveAsSettings, request: IArgdownRequest, response: IArgdownResponse): string;
}
export interface ISaveAsSettings {
    dataKey?: string;
    extension?: string;
    outputDir?: string;
    isRequestData?: boolean;
    fileName?: string | IFileNameProvider;
}
declare module "@argdown/core" {
    interface IArgdownRequest {
        saveAs?: ISaveAsSettings;
    }
    interface IArgdownResponse {
        outputPath?: string;
    }
}
export declare class SaveAsFilePlugin implements IAsyncArgdownPlugin {
    name: string;
    defaults: ISaveAsSettings;
    constructor(config: ISaveAsSettings);
    getSettings(request: IArgdownRequest): ISaveAsSettings;
    runAsync: IAsyncRequestHandler;
    getFileName(file: string): string;
    saveAsFile(data: string | Buffer, outputDir: string, fileName: string, extension: string, logger: IArgdownLogger): Promise<any>;
}
