import { DiscoveryService } from '@nestjs/core';
import { InstanceToken } from '@nestjs/core/injector/module';
import { CustomInjectorError, GetProviderOptions, GetProvidersOptions, InjectedProvidersStorageItem, InjectedProvidersStorageItemOptions } from './custom-injector.types';
export declare class CustomInjectorService {
    private readonly discoveryService;
    static _instance: CustomInjectorService;
    static getInstance(): CustomInjectorService;
    constructor(discoveryService: DiscoveryService);
    getProvider<T, E extends CustomInjectorError<T> = CustomInjectorError<T>>(token: InstanceToken, options?: GetProviderOptions<T, E>): T;
    getAsyncProvider<T, E extends CustomInjectorError<T> = CustomInjectorError<T>>(token: InstanceToken, options?: GetProviderOptions<T, E>): Promise<T>;
    getProviders<T, E extends CustomInjectorError<T> = CustomInjectorError<T>>(token: InstanceToken, options?: GetProvidersOptions<T, E>): T[];
    getAsyncProviders<T, E extends CustomInjectorError<T> = CustomInjectorError<T>>(token: InstanceToken, options?: GetProvidersOptions<T, E>): Promise<T[]>;
    createInjectedProvidersStorageItem<T, E extends CustomInjectorError<T> = CustomInjectorError<T>>(token: InstanceToken, target: unknown, options: InjectedProvidersStorageItemOptions<T, E>): InjectedProvidersStorageItem<T, E>;
    initAllNeedProviders(): Promise<void>;
    private _getProvider;
    private _getAsyncProvider;
    private getOneProvider;
    private _getProviders;
    private getManyProviders;
    private _getAsyncProviders;
    private _getLastComponentByName;
    private _getLastComponentsByClass;
    private _getComponentsByName;
    private _getComponentsByClass;
    private errorFactory;
    private toDiscoveredClass;
}
