/*!
 * name: nuget-server
 * version: 0.19.0
 * description: NuGet server on Node.js
 * author: Kouji Matsui (@kekyo@mi.kekyo.net)
 * license: MIT
 * repository.url: https://github.com/kekyo/nuget-server.git
 * git.commit.hash: 5b9501882b352a0490b3091210ed1740cfb81389
 */

import { Logger, DuplicatePackagePolicy } from '../types';
/**
 * Group of package dependencies for a specific target framework
 */
export interface DependencyGroup {
    targetFramework?: string;
    dependencies: PackageDependency[];
}
/**
 * Individual package dependency specification
 */
export interface PackageDependency {
    id: string;
    version?: string;
    exclude?: string;
}
/**
 * Complete metadata information for a package version
 */
export interface PackageMetadata {
    id: string;
    version: string;
    authors?: string;
    description?: string;
    licenseUrl?: string;
    licenseExpression?: string;
    projectUrl?: string;
    iconUrl?: string;
    icon?: string;
    tags?: string[];
    dependencies?: DependencyGroup[];
    published: Date;
    listed: boolean;
    packageContentUrl: string;
}
/**
 * Storage information for package files on disk
 */
export interface PackageStorage {
    dirName: string;
    fileName: string;
    nuspecName: string;
}
/**
 * Combined package metadata and storage information
 */
export interface PackageEntry {
    metadata: PackageMetadata;
    storage: PackageStorage;
}
/**
 * Service interface for managing package metadata and caching
 */
export interface MetadataService {
    readonly initialize: () => Promise<void>;
    readonly getPackageMetadata: (packageId: string) => PackageMetadata[];
    readonly getPackageVersion: (packageId: string, version: string) => PackageMetadata | undefined;
    readonly getPackageEntry: (packageId: string, version: string) => PackageEntry | undefined;
    readonly getAllPackageIds: () => string[];
    readonly getLatestPackageEntry: (packageId: string) => PackageEntry | undefined;
    readonly updateBaseUrl: (baseUrl: string) => Promise<void>;
    readonly addPackage: (metadata: PackageMetadata, policy?: DuplicatePackagePolicy) => Promise<{
        action: "added" | "overwritten" | "ignored" | "error";
        message?: string;
    }>;
    readonly addPackageEntry: (entry: PackageEntry) => Promise<void>;
}
/**
 * Creates a metadata service instance for managing package information
 * @param packagesRoot - Root directory containing package files (default: './packages')
 * @param baseUrl - Base URL for generating package URLs (default: '')
 * @param logger - Logger instance for service events
 * @returns Configured metadata service instance
 */
export declare const createMetadataService: (packagesRoot: string | undefined, baseUrl: string | undefined, logger: Logger) => MetadataService;
//# sourceMappingURL=metadataService.d.ts.map