/**
 * Shared package resolver with IoC composition.
 * Module-specific strategies are injected via constructor.
 * @module
 */
import type { DependencyInjectionAdapter } from '@suites/types.di';
import type { DoublesAdapter } from '@suites/types.doubles';
/**
 * Strategy function for checking if a package is available
 */
export type PackageResolverStrategy = (path: string) => boolean;
/**
 * Package resolver that uses an injected strategy to check package availability
 */
export declare class PackageResolver<TAdapter extends DependencyInjectionAdapter | DoublesAdapter> {
    private readonly adapters;
    private readonly resolverStrategy;
    constructor(adapters: Record<string, string>, resolverStrategy: PackageResolverStrategy);
    resolveCorrespondingAdapter(): Promise<TAdapter | never>;
}
