import { ScopeHandle, ServiceConstructor, ServiceFactory, ServiceLifetime, ServiceOptions, ServiceResolver } from './types'; export declare class ServiceContainer { private services; private paramServices; private resolver; registerSingleton(type: ServiceConstructor, serviceName: string, shortName: string, opts?: ServiceOptions): this; registerScoped(type: ServiceConstructor, serviceName: string, shortName: string, opts?: ServiceOptions): this; registerTransient(type: ServiceConstructor, serviceName: string, shortName: string, opts?: ServiceOptions): this; registerSingletonFactory(serviceName: string, shortName: string, factory: ServiceFactory, deps?: string[], opts?: ServiceOptions): this; registerScopedFactory(serviceName: string, shortName: string, factory: ServiceFactory, deps?: string[], opts?: ServiceOptions): this; registerTransientFactory(serviceName: string, shortName: string, factory: ServiceFactory, deps?: string[], opts?: ServiceOptions): this; registerParameterized(serviceName: string, shortName: string, lifetime: ServiceLifetime, factory: (resolver: ServiceResolver, ...args: TArgs) => T, opts?: ServiceOptions): this; resolve>(...serviceNames: string[]): T; resolveScoped>(...serviceNames: string[]): T; resolveWithArgs(serviceName: string, ...args: unknown[]): T; createScope(): ScopeHandle; has(name: string): boolean; clearInstances(): void; clearService(name: string): void; private register; private registerFactory; private clearNonRetainedInstances; private getRef; private resolveInternal; private resolveParamInternal; private inject; private validateNoCycles; } export declare function createContainer(): ServiceContainer;