import { HotStaq } from "./HotStaq";
import { HotLog } from "./HotLog";
import { HotAPI } from "./HotAPI";
import { HotRoute } from "./HotRoute";
/**
 * The type of server.
 */
export declare enum HotServerType {
    HTTP = 0,
    WebSockets = 1,
    Generate = 2,
    WebTesting = 3,
    APITesting = 4
}
/**
 * The server.
 */
export interface IHotServer {
    /**
     * The processor to use.
     */
    processor: HotStaq;
    /**
     * The server type.
     */
    serverType: string;
    /**
     * The API to use.
     */
    api: HotAPI;
    /**
     * The network address to listen on.
     * @default 0.0.0.0
     */
    listenAddress: string;
    /**
     * The ports to use.
     */
    ports: {
        /**
         * The HTTP port to use.
         * @default 5000
         */
        http: number;
        /**
         * The HTTPS port to use.
         * @default 443
         */
        https: number;
    };
    /**
     * SSL settings.
     */
    ssl: {
        /**
         * The SSL certificate to use.
         */
        cert: string;
        /**
         * The SSL certificate key to use.
         */
        key: string;
        /**
         * The SSL certificate CA to use.
         */
        ca: string;
    };
    /**
     * Redirect HTTP traffic to HTTPS.
     */
    redirectHTTPtoHTTPS: boolean;
    /**
     * The type of server.
     */
    type: HotServerType;
    /**
     * The logger.
     */
    logger: HotLog;
    /**
     * Any secrets associated with this server.
     */
    secrets: any;
}
/**
 * The server.
 */
export declare class HotServer implements IHotServer {
    /**
     * The processor to use.
     */
    processor: HotStaq;
    /**
     * The server type.
     */
    serverType: string;
    /**
     * The API to use.
     */
    api: HotAPI;
    /**
     * The network address to listen on.
     * @default 0.0.0.0
     */
    listenAddress: string;
    /**
     * The ports to use.
     */
    ports: {
        /**
         * The HTTP port to use.
         * @default 5000
         */
        http: number;
        /**
         * The HTTPS port to use.
         * @default 443
         */
        https: number;
    };
    /**
     * SSL settings.
     */
    ssl: {
        /**
         * The SSL certificate to use.
         */
        cert: string;
        /**
         * The SSL certificate key to use.
         */
        key: string;
        /**
         * The SSL certificate CA to use.
         */
        ca: string;
    };
    /**
     * Redirect HTTP traffic to HTTPS.
     */
    redirectHTTPtoHTTPS: boolean;
    /**
     * The type of server.
     */
    type: HotServerType;
    /**
     * The logger.
     */
    logger: HotLog;
    /**
     * Any secrets associated with this server.
     */
    secrets: any;
    constructor(processor: HotStaq | HotServer);
    /**
     * Set an API to this server. This will also set the associated
     * processor to this API as well.
     */
    setAPI(api: HotAPI): Promise<void>;
    /**
     * Register a route with the server.
     */
    registerRoute?(route: HotRoute): Promise<void>;
    /**
     * Start listening for requests.
     */
    listen?(): Promise<void>;
    /**
     * Shutdown the server.
     */
    shutdown?(): Promise<void>;
}
//# sourceMappingURL=HotServer.d.ts.map