import { UnknownCreator } from '../../types'; import type { BindingsVault } from '../BindingsVault'; import { Binding, Scope, Type } from './Binding'; export declare abstract class InstanceBinding implements Binding { readonly impl: UnknownCreator; readonly type = Type.Instance; abstract readonly scope: Scope; constructor(impl: UnknownCreator); } export declare class InstanceContainerScopedBinding extends InstanceBinding { readonly scope = Scope.Container; readonly cache: WeakMap; } export declare class InstanceResolutionScopedBinding extends InstanceBinding { readonly scope = Scope.Resolution; } export declare class InstanceSingletonScopedBinding extends InstanceBinding { readonly impl: UnknownCreator; readonly scope = Scope.Singleton; cache?: unknown; clone?(): InstanceSingletonScopedBinding; constructor(impl: UnknownCreator); } export declare class InstanceTransientScopedBinding extends InstanceBinding { readonly scope = Scope.Transient; } export declare const isInstanceBinding: (binding: Binding) => binding is InstanceBinding; export declare const isInstanceContainerScopedBinding: (binding: InstanceBinding) => binding is InstanceContainerScopedBinding; export declare const isInstanceResolutionScopedBinding: (binding: InstanceBinding) => binding is InstanceResolutionScopedBinding; export declare const isInstanceSingletonScopedBinding: (binding: InstanceBinding) => binding is InstanceSingletonScopedBinding;