import type { IElementConfig } from '../interfaces/context.js';
import type { ISettingsBackend } from '../interfaces/storage.js';
/**
 * Persisted config store for a single element.
 * Reads/writes to the element's scoped storage under the 'config' collection.
 * Notifies listeners on every change.
 */
export declare class ElementConfigStore implements IElementConfig {
    private readonly elementId;
    private cache;
    private listeners;
    private loaded;
    private readonly getBackend;
    constructor(elementId: string, settingsBackend: ISettingsBackend | (() => ISettingsBackend | null) | null);
    /** Load config from storage into cache. Called once on first access. */
    private ensureLoaded;
    getAll(): Record<string, unknown>;
    get<T = unknown>(key: string): T | undefined;
    set(key: string, value: unknown): Promise<void>;
    setAll(config: Record<string, unknown>): Promise<void>;
    onChange(callback: (config: Record<string, unknown>) => void): () => void;
    /** Initialize from storage — called by ContextFactory after creation */
    load(): Promise<void>;
    /** Initialize with default values (doesn't overwrite existing) */
    loadDefaults(defaults: Record<string, unknown>): Promise<void>;
    private persist;
    private notifyListeners;
}
//# sourceMappingURL=element-config-store.d.ts.map