import type { Scope } from './Scope.js'; type AbstractConstructor = abstract new (...args: any[]) => T; export interface IScopeClass = Scope> { scope?: T; } export interface IContextStorage { scope: Scope; parent: IContextStorage | null; } export type AbstractConstructorWithScope = abstract new (...args: any[]) => IScopeClass; export declare class Context { static scopeClass(target: T): T; private static storage_; static get root(): Scope; private static rootStorage; static run(scope: Scope, callback: () => R): R; private static currentStorage; static current(): Scope; static bind, Args extends any[], R>(scope: T, func: (...args: Args) => R): (...args: Args) => R; static wrap(func: (...args: Args) => R): (...args: Args) => R; static find>(targetClass: AbstractConstructor): T | null; static chain(): Scope[]; } export {}; //# sourceMappingURL=Context.d.ts.map