import { App, type CreateAppConfig } from "..";
import type { MiddlewareHandler } from "hono";
import type { AdminControllerOptions } from "../modules/server/AdminController";
export type BkndConfig<Args = any> = CreateAppConfig & {
    app?: CreateAppConfig | ((args: Args) => CreateAppConfig);
    onBuilt?: (app: App) => Promise<void>;
    beforeBuild?: (app: App) => Promise<void>;
    buildConfig?: Parameters<App["build"]>[0];
};
export type FrameworkBkndConfig<Args = any> = BkndConfig<Args>;
export type CreateAdapterAppOptions = {
    force?: boolean;
    id?: string;
};
export type FrameworkOptions = CreateAdapterAppOptions;
export type RuntimeOptions = CreateAdapterAppOptions;
export type RuntimeBkndConfig<Args = any> = BkndConfig<Args> & {
    distPath?: string;
    serveStatic?: MiddlewareHandler | [string, MiddlewareHandler];
    adminOptions?: AdminControllerOptions | false;
};
export type DefaultArgs = {
    [key: string]: any;
};
export declare function makeConfig<Args = DefaultArgs>(config: BkndConfig<Args>, args?: Args): CreateAppConfig;
export declare function createAdapterApp<Config extends BkndConfig = BkndConfig, Args = DefaultArgs>(config?: Config, args?: Args, opts?: CreateAdapterAppOptions): Promise<App>;
export declare function createFrameworkApp<Args = DefaultArgs>(config?: FrameworkBkndConfig, args?: Args, opts?: FrameworkOptions): Promise<App>;
export declare function createRuntimeApp<Args = DefaultArgs>({ serveStatic, adminOptions, ...config }?: RuntimeBkndConfig<Args>, args?: Args, opts?: RuntimeOptions): Promise<App>;
