import type { AnyElysia } from 'elysia';
export type HostLifecycle = {
    bootstrap?: () => void | Promise<void>;
    close?: () => void | Promise<void>;
};
export type HostSocket = {
    bootstrap: () => void | Promise<void>;
    apply: (app: AnyElysia) => AnyElysia;
    listenOptions: () => Record<string, unknown>;
    close?: () => void | Promise<void>;
};
export type HostMiddleware = {
    webAuth?: AnyElysia;
    adminAuth?: AnyElysia;
    requestLog?: AnyElysia;
    microApps?: AnyElysia;
    moduleGateway?: AnyElysia;
};
/**
 * 宿主静态绑定（方案 A）：入口侧 static import 后 registerHost，
 * 保证 bun build 与 IoC 同一份模块图，禁止再 pathToFileURL 加载 src/。
 */
export type HostBindings = {
    Db?: HostLifecycle;
    Cache?: HostLifecycle;
    Queue?: HostLifecycle;
    Auth?: HostLifecycle;
    Task?: HostLifecycle;
    Plugin?: HostLifecycle;
    Module?: HostLifecycle;
    Socket?: HostSocket;
    middleware?: HostMiddleware;
    /** 替代 filesystem scanHost：相对路径 import，打进 bundle */
    scan?: () => void | Promise<void>;
};
/** 宿主入口在 vome() 之前调用；可多次合并 */
export declare function registerHost(next: HostBindings): void;
export declare function getHostBindings(): HostBindings;
/**
 * 内置基建：Db → Cache → Queue → Auth
 */
export declare function bootstrapHostInfra(): Promise<void>;
export declare function bootstrapHostTasks(): Promise<void>;
export declare function bootstrapHostPlugins(): Promise<void>;
export declare function bootstrapHostModules(): Promise<void>;
export declare function shutdownHostTasks(): Promise<void>;
export declare function shutdownHostInfra(): Promise<void>;
export declare function applyHostAuthMiddleware(app: AnyElysia): Promise<AnyElysia>;
export declare function getHostSocket(): HostSocket | undefined;
