import { SettingsCategory } from "@edenapp/types";
import { CommandRegistry, IPCBridge, EdenEmitter } from "../ipc";
/**
 * Events emitted by the SettingsManager
 */
interface SettingsNamespaceEvents {
    changed: {
        appId: string;
        key: string;
        value: string;
    };
}
/**
 * SettingsManager - Manages persistent settings storage for Eden and apps
 *
 * Provides namespace-isolated settings storage using SQLite backend via Keyv.
 * Settings are stored separately from app data in settings.db.
 * Key format: {appId}:{key}
 *
 * Eden system settings use appId "com.eden" which is reserved.
 */
export declare class SettingsManager extends EdenEmitter<SettingsNamespaceEvents> {
    private keyv;
    private handler;
    constructor(ipcBridge: IPCBridge, commandRegistry: CommandRegistry, appsDirectory: string);
    /**
     * Get the namespaced key for an app setting
     */
    private getAppKey;
    /**
     * Get a setting value for an app
     */
    get(appId: string, key: string): Promise<string | undefined>;
    /**
     * Set a setting value for an app
     */
    set(appId: string, key: string, value: string): Promise<void>;
    /**
     * List all setting keys for an app
     */
    list(appId: string): Promise<string[]>;
    /**
     * Get all settings with values for an app
     */
    getAll(appId: string): Promise<Record<string, string>>;
    /**
     * Reset a setting to its default value
     */
    reset(appId: string, key: string, schema?: SettingsCategory[]): Promise<void>;
    /**
     * Get Eden settings schema
     */
    getEdenSchema(): SettingsCategory[];
    /**
     * Get the default value for an Eden setting key
     */
    private getEdenDefault;
    /**
     * Get all Eden settings with values (including defaults)
     */
    private getAllEdenSettings;
}
export {};
//# sourceMappingURL=SettingsManager.d.ts.map