import { ReactNode, Context } from "react"; import { IPropertyTransformerFactory } from "./IPropertyTransformer"; export interface ServiceKey { readonly _brand: T; readonly id: symbol; readonly name: string; } /** Create a service key with a string name */ export declare function createServiceKey(name: string): ServiceKey; /** Create a service key from a class constructor (uses class name) */ export declare function createServiceKey(ctor: new (...args: never[]) => T): ServiceKey; export declare class DIContainer { private readonly _services; private readonly _parent; constructor(parent?: DIContainer | null); register(key: ServiceKey, service: T): this; get(key: ServiceKey): T; has(key: ServiceKey): boolean; createChild(): DIContainer; } export declare const DIContext: Context; export declare function DIProvider({ container, children }: { container: DIContainer; children: ReactNode; }): ReactNode; export declare function useDIContainer(): DIContainer; /** Inject a service from DIContainer into a ViewModel property */ export declare function inject(key: ServiceKey): IPropertyTransformerFactory & { _requiredContext: Context; }; //# sourceMappingURL=di.d.ts.map