import { FoxpageHooks } from '../../hook';
import { ManagerBase } from '../main';
import { FPPackage, FPPackageResponse, PackageFetchOption, PackageFreshOption, PackageNamedVersion, PrePackage } from '../package';
export interface PluginManager {
    loadPlugins(): void;
    getPlugins(): string[];
    hasPlugin(name: string): boolean;
    getHooks(mode?: number): FoxpageHooks | undefined;
    destroy(): void;
}
export interface CSRPluginManager<T = FPPackage> extends ManagerBase<T> {
    addPlugin(content: FPPackage): PrePackage | null;
    removePlugins(names: string[]): void;
    getPlugin(name: string, version?: string): Promise<PrePackage | undefined>;
    getPlugins(names: string[]): Promise<PrePackage[]>;
    getPluginsById(ids: string[]): Promise<PrePackage[]>;
    getPluginSync(name: string, version?: string): PrePackage | null;
    getLocalPlugin(name: string, version?: string): Promise<PrePackage | null>;
    freshPlugins(params?: PackageFreshOption): Promise<PrePackage[]>;
    fetchPlugins(packageIds?: string[], opt?: Pick<PackageFreshOption, 'strategy'>): Promise<FPPackage[]>;
    fetchPluginsByNamedVersions(nameVersions: PackageNamedVersion[], opt?: PackageFetchOption): Promise<FPPackageResponse[]>;
}
