import { Foo } from "./Foo"; import { Bar } from "./Bar"; import { ActivationType } from "../di/interfaces"; import { Builder } from "../di/Annotations"; import { Box } from "./Box"; interface RegistrationOptions { activation?: ActivationType; } interface Dependency { $dependency: K; lazy?: boolean; } interface Lazy extends Dependency { lazy: true; } type PromiseOrValue = T | PromiseLike; interface ConfigBuilder { build(name: K): Builder; dependency(name: K): Dependency; lazy(name: K): Lazy; mapTo(name: K, ctor: () => PromiseOrValue S[K]>): ConfigBuilder; } interface ContainerServices { barBox: Box; foo: Foo; bar: Bar; password: string; user: string; timeout: number; } declare function load(m: PromiseLike, name: C): () => PromiseLike; const t = { barBox: load(import("./Box"), "Box"), foo: async () => (await import("./Bar")).Bar, bar: Bar, password: String, user: String, timeout: Number }; export declare const config: ConfigBuilder; config .mapTo("bar", ) .mapTo("barBox", ;