declare function isPromise(object: unknown): object is Promise; type Either = Left | Right; interface BaseEither { value: T; } interface Left extends BaseEither { isRight: false; } interface Right extends BaseEither { isRight: true; } type AbstractNewable = abstract new (...args: TArgs) => TInstance; type Newable = new (...args: TArgs) => TInstance; type ServiceIdentifier = string | symbol | Newable | AbstractNewable | Function; declare function stringifyServiceIdentifier(serviceIdentifier: ServiceIdentifier): string; declare const islazyServiceIdentifierSymbol: unique symbol; declare class LazyServiceIdentifier { #private; [islazyServiceIdentifierSymbol]: true; constructor(buildServiceId: () => ServiceIdentifier); static is(value: unknown): value is LazyServiceIdentifier; unwrap(): ServiceIdentifier; } export { LazyServiceIdentifier, isPromise, stringifyServiceIdentifier }; export type { AbstractNewable, BaseEither, Either, Left, Newable, Right, ServiceIdentifier };