import { Type } from '../../contracts/type';
import { Injector } from './injector';
import { InstanceLinksHost } from './instance-links-host';
import { Module } from './module';
import { ContextId } from './instance-wrapper';
import { AbstractInterface, GetOrResolveOptions } from '../../contracts';
export declare abstract class AbstractInstanceResolver {
    protected abstract instanceLinksHost: InstanceLinksHost;
    protected abstract injector: Injector;
    protected abstract get<T = any, R = T>(typeOrToken: Type<T> | Function | string | symbol, options?: GetOrResolveOptions): R | Array<R>;
    protected find<T = any, R = T>(typeOrToken: Type<T> | AbstractInterface<T> | string | symbol, options: {
        moduleId?: string;
        each?: boolean;
    }): R | Array<R>;
    protected resolvePerContext<TInput = any, TResult = TInput>(typeOrToken: Type<TInput> | AbstractInterface<TInput> | string | symbol, contextModule: Module, contextId: ContextId, options?: GetOrResolveOptions): Promise<TResult | Array<TResult>>;
}
//# sourceMappingURL=abstract-instance-resolver.d.ts.map