export interface INewable { new (args?: U): T; getKey: () => string; initialize?: (instanceId?: string) => void; } export declare abstract class Singleton { constructor(); protected static getInstance(className: new () => T): T; protected static dispose(): void; private static _allowPrivateInstantiation; private static _instance; } export declare class Factory { static create(className: INewable, args?: U): T; static createObject(className: INewable, args?: U | null): T; } export declare abstract class KeyMonikerProvider { static getKey(): string; } export declare abstract class Initializable extends KeyMonikerProvider { abstract initialize(instanceId?: string | null): void; } export declare abstract class BaseManager extends Singleton { constructor(); protected dispose(): void; protected getAllObjects(instanceClass: INewable): T[]; protected getObject(instanceClass: INewable, instanceId: string | null | undefined): T; protected removeObject(instanceClass: INewable, instanceId: string | null | undefined): void; protected createObject(instanceClass: INewable, instanceId: string | null | undefined, args: U | null): T; protected abstract onObjectCreated(instance: T, instanceId: string | null | undefined): void; private _getInstanceKey; private _deleteInstance; private _instanceMap; } export declare abstract class Manager extends BaseManager { protected onObjectCreated(instance: Initializable, instanceId: string | null | undefined): void; }