import { IWriter } from "./i-writer";
import { IFileSaver } from "@wessberg/filesaver";
import { IFormatter } from "../formatter/i-formatter";
import { IBuildConfig } from "../build-config/i-build-config";
import { IWriterOptions } from "./i-writer-options";
import { WriterEntry } from "./writer-entry";
import { ICompressor } from "../compression/i-compressor";
/**
 * The abstract base class for writers. Writers are classes that can write things to disk
 */
export declare abstract class Writer<T> implements IWriter<T> {
    protected readonly config: IBuildConfig;
    protected readonly fileSaver: IFileSaver;
    protected readonly formatter: IFormatter;
    protected readonly compressor: ICompressor;
    constructor(config: IBuildConfig, fileSaver: IFileSaver, formatter: IFormatter, compressor: ICompressor);
    /**
     * Writes the given content to the given paths
     * @template T
     * @param {IWriterOptions<T>} options
     * @returns {Promise<void>}
     */
    write(options: IWriterOptions<T>): Promise<void>;
    /**
     * Writes one of the given entries to disk
     * @template T
     * @param {WriterEntry<T>} entry
     * @returns {Promise<void>}
     */
    protected abstract writeFile(entry: WriterEntry<T>): Promise<void>;
}
