import { Logger } from '../../core/logger/logger.service';
import { ConfigService } from '../../core/config/config.service';
export interface HomebridgePlugin {
    name: string;
    displayName?: string;
    description?: string;
    certifiedPlugin?: boolean;
    publicPackage?: boolean;
    installedVersion?: string;
    latestVersion?: boolean;
    lastUpdated?: string;
    updateAvailable?: boolean;
    installPath?: string;
    globalInstall?: boolean;
    settingsSchema?: boolean;
    links?: {
        npm?: string;
        homepage?: string;
        bugs?: string;
    };
    author?: string;
}
export declare class PluginsService {
    private configService;
    private logger;
    private npm;
    private paths;
    private installedPlugins;
    private rp;
    constructor(configService: ConfigService, logger: Logger);
    getInstalledPlugins(): Promise<HomebridgePlugin[]>;
    getOutOfDatePlugins(): Promise<HomebridgePlugin[]>;
    searchNpmRegistry(query: string): Promise<HomebridgePlugin[]>;
    searchNpmRegistrySingle(query: string): Promise<HomebridgePlugin[]>;
    installPlugin(pluginName: string, client: any): Promise<boolean>;
    uninstallPlugin(pluginName: string, client: any): Promise<boolean>;
    updatePlugin(pluginName: string, client: any): Promise<boolean>;
    getHomebridgePackage(): Promise<HomebridgePlugin>;
    updateHomebridgePackage(client: any): Promise<boolean>;
    updateSelfOffline(client: any): Promise<void>;
    getPluginConfigSchema(pluginName: string): Promise<any>;
    getPluginChangeLog(pluginName: string): Promise<{
        changelog: string;
    }>;
    getPluginRelease(pluginName: string): Promise<{
        name: any;
        changelog: any;
    }>;
    private getInstalledModules;
    private getNpmPath;
    private getBasePaths;
    private parsePackageJson;
    private getPluginFromNpm;
    private runNpmCommand;
    private ensureCustomPluginDirExists;
}
