import type { IDisposable } from '../functions/disposer.js'; import type { IValueModel } from '../models/types.js'; interface ICtor { new (id?: number): T; } export interface StaticSingleton extends ICtor { readonly ID: number; readonly HasInstance: boolean; Destroy(): void; readonly BaseClass: ICtor; readonly Instance: InstanceType>; Extend(Child: ICtor): StaticSingleton; } type Extensions = { onDestroyed?: () => void; createId?: () => IValueModel; }; export declare function createSingleton(Ctor: ICtor, extensions?: Extensions): StaticSingleton; export {};