import { LogClient } from "@intuitionrobotics/ts-common";
import { type DeployableFunction, type FirebaseFunctionOptions } from '@intuitionrobotics/firebase/backend-functions';
import { type HttpErrorHandler } from "../modules/server/HttpServer.js";
import { BaseStorm } from "./BaseStorm.js";
import { type Express, type Router } from "express";
export declare class Storm extends BaseStorm {
    private routes?;
    private functions;
    private express?;
    private logClient;
    private onDestroy?;
    private onStart?;
    private apiFunctionOptions;
    errorMessageComposer: HttpErrorHandler;
    constructor();
    setErrorMessageComposer(errorMessageComposer: HttpErrorHandler): this;
    setApp(app: Express): this;
    setApiFunctionOptions(options: FirebaseFunctionOptions): this;
    setLogClient(logClient: LogClient): this;
    getLogClient(): LogClient;
    setOnDestroy(onDestroy?: () => Promise<void>): this;
    setOnStart(onStart?: () => Promise<void>): this;
    static getInstance(): Storm;
    init(): this;
    private assertNoLegacyModuleInit;
    setRoutes(routes: Router): this;
    /**
     * @deprecated No-op. The URL prefix comes from the function name on Cloud
     * Functions (the `api` function serves `…/api/**`), so the router always
     * mounts at root — there is no standalone-server mode that needed a prefix.
     */
    setInitialRoutePath(_initialPath: string): this;
    build(onStarted?: () => Promise<void>): Record<string, DeployableFunction>;
}
//# sourceMappingURL=Storm.d.ts.map