import { InjectableContainer, Dependencies, Injectable } from "@injectable/core";
import { FileHostingService, Encoding, OnRequest } from "@injectable/file-hosting-service";
import { LogService } from "@injectable/log-service";
import { Configuration } from "webpack";
export declare class WebpackService extends Injectable<["WebpackService"], Dependencies<[FileHostingService, LogService<any, any>]>> {
    private resourceStore;
    private counter;
    prepare(): void;
    /**
     * registers an id for a compilation
     */
    registerCompilationId(): number;
    /**
     * Sets a compilation to be compiled and then hosted.
     * @param injectableName creator injectable
     * @param compilationId id of the compilation
     * @param files files to compile
     * @param configuration webpack configuration
     * @param baseRoute base route to host the files on
     * @param encodings all possible encodings
     * @param onRequest callback to verify the file request
     */
    setCompilation(injectableName: string, compilationId: number, files: {
        [filename: string]: string;
    }, configuration: Configuration, baseRoute: string, encodings: Array<Encoding>, onRequest?: OnRequest): void;
    /**
     * deletes a compilation and all hosted files assoicated with it
     * @param injectableName creator injectable
     * @param compilationId id of the compilation
     */
    deleteCompilation(injectableName: string, compilationId: number): void;
    protected onClose(): void;
    protected removeResources(injectableName: string): void;
    private compileFiles;
    /**
     *
     * queue.length must be at least 1
     * @param hash
     * @param compileRequests
     */
    private compileQueue;
    private compile;
}
export { Configuration } from "webpack";
export { Encoding, OnRequest } from "@injectable/file-hosting-service";
export default class WebpackServiceContainer extends InjectableContainer<WebpackService> {
    typeNames: ["WebpackService"];
    injectableClass: typeof WebpackService;
    dependencyTypeNames: ["FileHostingService", "LogService"];
}
