import { Config } from './config/config';
interface ModuleData {
    module: string;
    metadata: object;
    location: string;
}
export interface NpmDistTags {
    latest: string;
    [prerelease: string]: string;
}
export interface WasmCapabilities {
    network?: boolean;
    storage?: 'vfs-only' | 'none';
    dataRead?: boolean;
    dataWrite?: boolean;
    serialPorts?: boolean;
    putHandlers?: boolean;
    httpEndpoints?: boolean;
    resourceProvider?: boolean;
    weatherProvider?: boolean;
    radarProvider?: boolean;
    rawSockets?: boolean;
}
export interface NpmPackageData {
    name: string;
    version: string;
    date: string;
    keywords: string[];
    description?: string;
    wasmManifest?: string;
    wasmCapabilities?: WasmCapabilities;
    signalk?: {
        displayName?: string;
    };
}
export interface Package {
    name: string;
    publisher?: {
        username: string;
    };
    maintainers?: Array<{
        username?: string;
        email?: string;
    }>;
    author?: string | {
        name?: string;
        email?: string;
        url?: string;
    };
    dependencies: {
        [key: string]: any;
    };
    version: string;
    description: string;
    license: string;
}
export declare function modulesWithKeyword(config: Config, keyword: string): ModuleData[];
export declare function restoreModules(config: Config, onData: (output: any) => void, onErr: (err: Error) => void, onClose: (code: number) => any): void;
export declare function runNpm(config: Config, name: any, version: string | null, command: string, onData: (output: any) => any, onErr: (err: Error) => any, onClose: (code: number) => any): void;
export declare function checkForNewServerVersion(currentVersion: string, serverUpgradeIsAvailable: (errMessage: string | void, version?: string) => any, getLatestServerVersionP?: (version: string) => Promise<string>): void;
export declare function getAuthor(thePackage: Package): string;
export declare function getKeywords(thePackage: NpmPackageData): string[];
export declare function importOrRequire(moduleDir: string): Promise<any>;
export {};
//# sourceMappingURL=modules.d.ts.map