import { SyncDescriptor0 } from '../../../platform/instantiation/common/descriptors'; import { Graph } from '../../../platform/instantiation/common/graph'; import { GetLeadingNonServiceArgs, IInstantiationService, ServiceIdentifier, ServicesAccessor } from '../../../platform/instantiation/common/instantiation'; import { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection'; export declare class InstantiationService implements IInstantiationService { private readonly _services; private readonly _strict; private readonly _parent?; private readonly _enableTracing; readonly _serviceBrand: undefined; readonly _globalGraph?: Graph; private _globalGraphImplicitDependency?; constructor(_services?: ServiceCollection, _strict?: boolean, _parent?: InstantiationService | undefined, _enableTracing?: boolean); createChild(services: ServiceCollection): IInstantiationService; invokeFunction(fn: (accessor: ServicesAccessor, ...args: TS) => R, ...args: TS): R; createInstance(descriptor: SyncDescriptor0): T; createInstance any, R extends InstanceType>(ctor: Ctor, ...args: GetLeadingNonServiceArgs>): R; private _createInstance; private _setServiceInstance; private _getServiceInstanceOrDescriptor; protected _getOrCreateServiceInstance(id: ServiceIdentifier, _trace: Trace): T; private readonly _activeInstantiations; private _safeCreateAndCacheServiceInstance; private _createAndCacheServiceInstance; private _createServiceInstanceWithOwner; private _createServiceInstance; private _throwIfStrict; } declare const enum TraceType { None = 0, Creation = 1, Invocation = 2, Branch = 3 } export declare class Trace { readonly type: TraceType; readonly name: string | null; static all: Set; private static readonly _None; static traceInvocation(_enableTracing: boolean, ctor: any): Trace; static traceCreation(_enableTracing: boolean, ctor: any): Trace; private static _totals; private readonly _start; private readonly _dep; private constructor(); branch(id: ServiceIdentifier, first: boolean): Trace; stop(): void; } export {};