import type { ArkmeEnvironment, ArkmeSourceItem } from '../types.js'; type PreferenceStorage = Pick; type ExpansionUpdate = (current: ReadonlySet) => ReadonlySet; export declare function selfTopicExpansionKey(userId: number | undefined, environment: ArkmeEnvironment): string | undefined; export declare function selfTopicExpansionIdentity(source: ArkmeSourceItem): string; /** Synchronous writes survive menu unmounts. All entry points share one account store. */ export declare class SelfTopicExpansionStore { private readonly key?; private readonly storage; private value; private readonly listeners; constructor(key?: string | undefined, storage?: PreferenceStorage | undefined); private read; readonly getSnapshot: () => ReadonlySet; readonly getServerSnapshot: () => ReadonlySet; readonly subscribe: (listener: () => void) => (() => void); update(update: ExpansionUpdate): void; } export declare function sourceRefsFromExpansionKeys(keys: ReadonlySet, sources: readonly ArkmeSourceItem[]): Set; export declare function updateExpansionKeys(keys: ReadonlySet, sources: readonly ArkmeSourceItem[], update: ExpansionUpdate): ReadonlySet; export declare function useSelfTopicExpansion(userId: number | undefined, environment: ArkmeEnvironment, sources: readonly ArkmeSourceItem[]): readonly [Set, (change: ExpansionUpdate, currentSources?: readonly ArkmeSourceItem[]) => void]; export {}; //# sourceMappingURL=self-topic-expansion-preference.d.ts.map