import { Client, Dependency, Maintainer, Package, URLBuilder, Version } from "./client.mjs"; /** Common base for package registries and registry decorators. */ export declare abstract class Registry { abstract ecosystem(): string; abstract fetchPackage(name: string, signal?: AbortSignal): Promise; abstract fetchVersions(name: string, signal?: AbortSignal): Promise; abstract fetchDependencies(name: string, version: string, signal?: AbortSignal): Promise; abstract fetchMaintainers(name: string, signal?: AbortSignal): Promise; abstract urls(): URLBuilder; } /** Constructor every adapter exposes, built-in or registered from outside the package. */ export type RegistryConstructor = new (baseURL: string, client: Client) => Registry; /** One ecosystem the registry knows: static metadata plus a loader for the adapter class. */ export interface RegistryEntry { /** PURL type the adapter serves. */ readonly ecosystem: string; /** Registry API URL used when `create()` gets none. */ readonly defaultURL: string; /** Resolves the adapter class; for a built-in that is a literal `import()` of its module. */ readonly load: () => Promise; } /** * Register an ecosystem adapter. * * Built-in adapters are already listed; this is the entry point for classes living outside the * package. Registering a key again replaces the previous adapter. * * @param ecosystem - Ecosystem key. * @param defaultURL - Default registry API URL. * @param RegistryClass - Adapter constructor. */ export declare function register(ecosystem: string, defaultURL: string, RegistryClass: RegistryConstructor): void; /** * Create an adapter for a registered ecosystem. * * A built-in adapter's module is imported here, on the first call for its key; parallel callers * share that import and later calls reuse it. A failed import is retried on the next call. * * @param ecosystem - Ecosystem key. * @param baseURL - Optional registry API URL override. * @param client - Optional HTTP client. * @returns {Promise} The registry adapter. * @throws {UnknownEcosystemError} When nothing is registered under `ecosystem`. */ export declare function create(ecosystem: string, baseURL?: string, client?: Client): Promise; /** * List registered ecosystems. * * @returns {string[]} The ecosystem keys, built-ins first in manifest order. */ export declare function ecosystems(): string[]; /** * Check whether an ecosystem is registered. * * @param ecosystem - Ecosystem key. * @returns {boolean} Whether an adapter is registered. */ export declare function has(ecosystem: string): boolean; //# sourceMappingURL=registry.d.mts.map