import { Package } from '../core/Package';
import { IPackageMeta } from '../resolver/resolver';
export interface ICacheAdapter {
    init(): any;
    set(key: string, value: any): any;
    get<T>(key: string): T;
    ensure<T>(key: string): T;
    sync(): void;
}
export interface ICacheRequest {
    name: string;
    version: string;
    forModules: Array<string>;
}
export declare type ICacheResponse = Array<{
    content: ICachePackageContent;
    meta: ICachePackage;
}>;
export interface ICachePackageContent {
    compiled: string;
    sourceMap: string;
}
export declare type ICacheDependencies = Array<{
    name: string;
    version: string;
}>;
export interface ICachePackage {
    name: string;
    version: string;
    modules: Array<string>;
    meta?: IPackageMeta;
    dependencies?: ICacheDependencies;
}
export declare type ICachePackages = {
    [version: string]: ICachePackage;
};
export interface ICacheTreeContents {
    packages: {
        [name: string]: ICachePackages;
    };
}
export interface ICachePackageResponse {
    abort?: boolean;
    target?: {
        moduleMismatch?: boolean;
        pkg: Package;
    };
    dependants?: Array<Package>;
}
