import { PackageConfig, ExactPackage, LatestPackageTarget } from "../install/package.js";
import { Resolver } from "../trace/resolver.js";
import { Install } from "../generator.js";
export interface Provider {
    parseUrlPkg(this: Resolver, url: string): ExactPackage | {
        pkg: ExactPackage;
        subpath: `./${string}` | null;
        layer: string;
    } | null;
    pkgToUrl(this: Resolver, pkg: ExactPackage, layer: string): Promise<`${string}/`>;
    resolveLatestTarget(this: Resolver, target: LatestPackageTarget, layer: string, parentUrl: string): Promise<ExactPackage | null>;
    ownsUrl?(this: Resolver, url: string): boolean;
    resolveBuiltin?(this: Resolver, specifier: string, env: string[]): string | Install | null;
    getPackageConfig?(this: Resolver, pkgUrl: string): Promise<PackageConfig | null>;
    supportedLayers?: string[];
    configure?(config: any): void;
}
export declare const defaultProviders: Record<string, Provider>;
export declare function getProvider(name: string, providers: Record<string, Provider>): Provider;
export declare function configureProviders(providerConfig: Record<string, any>, providers: Record<string, Provider>): void;
export declare function getDefaultProviderStrings(): any[];
export declare const registryProviders: Record<string, string>;
export declare const mappableSchemes: Set<String>;
export declare const builtinSchemes: Set<String>;
