import { AppManifest } from "@edenapp/types";
import { IPCBridge, CommandRegistry, EdenEmitter, PermissionRegistry } from "../ipc";
/**
 * Events emitted by the PackageManager
 */
interface PackageNamespaceEvents {
    installed: {
        manifest: AppManifest;
    };
    uninstalled: {
        appId: string;
    };
}
export declare class PackageManager extends EdenEmitter<PackageNamespaceEvents> {
    private appsDirectory;
    private prebuiltAppsDirectory;
    private installedApps;
    private packageHandler;
    private permissionRegistry;
    constructor(ipcBridge: IPCBridge, appsDirectory: string, distPath: string, commandRegistry: CommandRegistry, permissionRegistry: PermissionRegistry);
    /**
     * Initialize the package manager
     */
    initialize(): Promise<void>;
    /**
     * Load prebuilt apps from dist/apps/prebuilt
     */
    private loadPrebuiltApps;
    /**
     * Load all installed apps from disk
     */
    private loadInstalledApps;
    /**
     * Install an app from a .edenite file
     */
    installApp(edenitePath: string): Promise<AppManifest>;
    /**
     * Uninstall an app
     */
    uninstallApp(appId: string): Promise<boolean>;
    /**
     * Get list of installed apps
     * @param showHidden - If true, includes overlay apps and daemons (hidden by default)
     */
    getInstalledApps(showHidden?: boolean): AppManifest[];
    /**
     * Get manifest for an app
     */
    getAppManifest(appId: string): AppManifest | undefined;
    /**
     * Validate app manifest
     */
    private validateManifest;
    /**
     * Get the installation path for an app
     */
    getAppPath(appId: string): string | undefined;
    /**
     * Reload an app (for hot reload support)
     * This will notify that the app has been updated
     */
    reloadApp(appId: string): Promise<void>;
    /**
     * Get the app icon as a base64 data URL
     */
    getAppIcon(appId: string): Promise<string | undefined>;
    /**
     * Get MIME type for an image file extension
     */
    private getMimeType;
}
export {};
//# sourceMappingURL=PackageManager.d.ts.map