interface Class {
    new (...args: any[]): unknown;
}
export type KadoToken = string | symbol | number;
export type KadoScope = 'Transient' | 'Singleton';
export interface KadoManifestItem {
    token?: KadoToken;
    useClass?: Class;
    useValue?: any;
    useFnByContainer?(container: KadoContainer): any;
    useFn?(...args: any[]): any;
    params?: KadoParam[];
    scope?: KadoScope;
    meta?: Record<string, any>;
}
export type KadoParam = KadoToken | KadoManifestItem;
export type KadoContainer = Container;
export declare class Container {
    #private;
    constructor();
    resolve<T>(token: KadoToken): Promise<T>;
    register(manifestItems: KadoManifestItem[]): void;
    list(): KadoManifestItem[];
    get(token: KadoToken): KadoManifestItem;
}
export declare class Kado {
    static scope: Record<KadoScope, KadoScope>;
    container: KadoContainer;
    constructor();
    static value(value: unknown): KadoManifestItem;
    static map(params: KadoParam[]): KadoManifestItem;
    static flatMap(params: KadoParam[]): KadoManifestItem;
}
export {};
//# sourceMappingURL=kado.d.ts.map