import type { PersistenceDriver } from "./types.js"; export type ConfigStore = { current: T[K]; available: T[]; set(id: T[K]): void; get(id: T[K]): T | undefined; getProp

(prop: P, id?: T[K]): T[P] | undefined; addItems(newItems: T[]): void; /** * Register a callback to fire when the current item changes. * Returns an unsubscribe function. */ onChange: (cb: (newId: T[K], oldId: T[K]) => void) => () => void; /** * Inject (or replace) the persistence driver at runtime. * Call this inside your plugin factory so the real driver * (e.g. localStorageDriver from RuneProvider) is used instead * of the default in-memory fallback that was set at module-load time. * Also re-reads any value already persisted under storageKey. */ setDriver: (driver: PersistenceDriver) => void; }; export interface ConfigStoreOptions { /** Array of available items */ items: readonly T[]; /** Storage key used by the persistence driver */ storageKey: string; /** Display name for logging (e.g., "Theme", "Language") */ displayName: string; /** Key to use as identifier (e.g., "code", "name") */ idKey: K; /** Icon for logs */ icon?: string; /** Persistence driver */ driver?: PersistenceDriver; } /** * Creates a reactive configuration store with persistence */ export declare function createConfigStore( options: ConfigStoreOptions, ): ConfigStore;