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