import { type CompositionManifest, type CompositionRegistry } from "./composition.js"; import type { VoyantAppConfig, VoyantBindings } from "./types.js"; /** * Config-driven app config: the manifest + registry + capabilities replace the * resolved `modules`/`extensions` of {@link VoyantAppConfig}. Everything else * (db surfaces, auth, plugins, publicPaths, …) is unchanged. */ export interface CreateAppConfig extends Omit, "modules" | "extensions"> { /** Ordered module/extension manifest. */ manifest: CompositionManifest; /** Maps each manifest entry to its factory. */ registry: CompositionRegistry; /** Deployment capabilities passed to every registry factory. */ capabilities: TCapabilities; } /** * The low-level config-driven front door. Derives the module/extension set from * an explicit manifest + registry + capabilities, then mounts the app — instead * of `composeFromManifest(...)` followed by `mountApp(...)`: * * export const app = createApp({ * manifest: runtimeManifest, * registry: composition, * capabilities: buildProviders(), * db, auth, plugins, ... * }) * * Framework callers may use `createVoyantApp({ providers, modules })` for an * explicit local registry. Standard product units are composed from the * generated deployment graph instead of this registry path. */ export declare function createApp(config: CreateAppConfig): import("hono").Hono<{ Bindings: TBindings; Variables: import("./types.js").VoyantVariables; }, import("hono/types").BlankSchema, "/"> & import("./app.js").VoyantAppExtensions;