import { HotStaq } from "./HotStaq";
import { HotSite } from "./HotSite";
import { HotLog } from "./HotLog";
import { HotHTTPServer } from "./HotHTTPServer";
import { APItoLoad, HotAPI } from "./HotAPI";
/**
 * Generates stuff like API
 */
export declare class HotGenerator {
    /**
     * The HotSites to build from.
     */
    hotsites: HotSite[];
    /**
     * The type of code or api documentation to generate. Can be:
     * * typescript
     * * javascript
     * * openapi-3.0.0-json
     * * openapi-3.0.0-yaml
     * * asyncapi-2.6.0-json
     * * asyncapi-2.6.0-yaml
     */
    generateType: string;
    /**
     * Compile the typescript. DOES NOT WORK.
     */
    compileTS: boolean;
    /**
     * Specify a custom tsconfig path.
     */
    tsconfigPath: string;
    /**
     * Optimize the compiled JavaScript.
     */
    optimizeJS: boolean;
    /**
     * The routes to skip when generating.
     */
    skipRoutes: string[];
    /**
     * The logger.
     */
    logger: HotLog;
    /**
     * The output directory.
     */
    outputDir: string;
    /**
     * The directory to copy all built files to.
     */
    copyTo: string;
    /**
     * Exit on complete.
     */
    exitOnComplete: boolean;
    /**
     * What the generated route extends.
     * @default "HotStaqWeb.HotRoute"
     */
    routeExtends: string;
    constructor(logger: HotLog);
    /**
     * Get the base url from the HotSite.
     */
    getBaseUrlFromHotSite(processor: HotStaq, apiServer: HotHTTPServer, loadedAPI: APItoLoad, baseAPIUrl?: string): string;
    /**
     * Start the API server.
     */
    protected startAPIServer(processor: HotStaq, loadedAPI: APItoLoad): Promise<{
        api: HotAPI;
        baseAPIUrl: string;
    }>;
    /**
     * Process the APIs for generation.
     */
    protected processAPIs(processor: HotStaq, apis: {
        [name: string]: APItoLoad;
    }, apiToProcess: (key: string, hotsite: HotSite, loadedAPI: any, libraryName: string, apiName: string, outputDir: string, serverResult: {
        api: HotAPI;
        baseAPIUrl: string;
    }) => Promise<void>): Promise<void>;
    /**
     * Generate the API.
     *
     * @fixme Needs tests!
     */
    generateAPI(processor: HotStaq, apis: {
        [name: string]: APItoLoad;
    }): Promise<void>;
    /**
     * Generate the API documentation.
     *
     * @fixme Needs tests!
     */
    generateAPIDocumentation(processor: HotStaq, apis: {
        [name: string]: APItoLoad;
    }): Promise<void>;
    /**
     * Get the content.
     */
    getAPIContent(type: string, contentPart: string, data: any): Promise<string>;
    /**
     * Get the Typescript content.
     */
    getTypeScriptContent(contentPart: string, data: any): Promise<string>;
    /**
     * Get the JavaScript content.
     */
    getJavaScriptContent(contentPart: string, data: any): Promise<string>;
}
//# sourceMappingURL=HotGenerator.d.ts.map