declare abstract class InternalKey { abstract readonly kind: 'singleton' | 'group'; abstract readonly id: string; } /** * Key for singleton service T. */ export declare class ServiceKey extends InternalKey { readonly id: string; readonly kind = "singleton"; constructor(id: string); } /** * Key for group of service T. */ export declare class GroupServiceKey extends InternalKey { readonly id: string; readonly kind = "group"; constructor(id: string); } export type AllServiceKeys = ServiceKey | GroupServiceKey; export declare class ServiceProvider { private _container; add(key: ServiceKey, value: T | undefined): void; add(key: GroupServiceKey, value: T): void; remove(key: ServiceKey): void; remove(key: GroupServiceKey, value: T): void; tryGet(key: ServiceKey): T | undefined; tryGet(key: GroupServiceKey): readonly T[] | undefined; get(key: ServiceKey): T; get(key: GroupServiceKey): readonly T[]; clone(): ServiceProvider; dispose(): void; private _addGroupService; private _removeGroupService; } export {};