import { Class } from "./types";
/** Dependency Injection Container */
export declare class DIContainer {
    private registry;
    private tokenMap;
    private singletons;
    private requestScope;
    constructor(registry?: Map<Class, import("./types").Registration>, tokenMap?: Map<string, Class>);
    /** Resolve class, handles singleton/request scope */
    resolve<T>(cls: Class<T>): Promise<T>;
    /** Resolve via string token */
    getInjection<T>(token: string): Promise<T>;
    /** Reset request-scope objects (called after request ends) */
    endRequestScope(): Promise<void>;
    /** Shutdown global app (e.g. on server close) */
    shutdown(): Promise<void>;
    isClass(input: any): input is Class;
}
export declare const container: DIContainer;
export declare const getInjection: <T = any>(token: string) => Promise<T>;
/** Helper for safe server action execution with error handling */
export declare function withContainer<T>(fn: (c: DIContainer) => Promise<T>): Promise<{
    data?: T;
    error?: {
        message: string;
        code: string;
        status: number;
    };
}>;
