/**
 * 资源墙 localStorage：解析、校验、首屏读盘（与 PisellReservation 水合/落盘同源）。
 */
import type { VenueWallAppearanceTheme, RecordBoardResourceWallLayoutPersist } from '@pisell/materials';
/** 资源墙外观主题是否含有效数据（用于决定是否落盘 / 是否用磁盘值覆盖 state） */
export declare function isVenueWallAppearanceThemeNonEmpty(t: VenueWallAppearanceTheme): boolean;
/** 资源墙多选 id：去重且保持首次出现顺序（与勾选 / 落盘顺序一致）。 */
export declare function dedupeResourceWallIdsPreserveOrder(ids: readonly string[]): string[];
export declare function parseResourceWallLocalStorage(raw: string | null, whitelist: readonly string[]): {
    resourceIds?: string[];
    /** v1 对象或旧版纯数组：是否显式携带 resource_wall_resource_ids（含空数组），水合时不得再默认「全选」 */
    resourceWallResourceIdsInFile?: boolean;
    filterValuePatches: Record<string, unknown>;
    venueWallAppearanceTheme?: VenueWallAppearanceTheme;
    venueWallAppearanceMode?: 'light' | 'dark';
    venueWallResourceLayout?: RecordBoardResourceWallLayoutPersist;
};
/**
 * 首屏同步读盘，供 `useState` 初值使用。
 * 避免同一提交内「persist effect 先于 hydrate 的 setState 落盘」时用默认 layout 覆盖 localStorage 里已保存的版式。
 */
export declare function readResourceWallPersistedSliceFromDisk(bodyViewStorageKey: string | undefined): {
    venueWallAppearanceTheme: VenueWallAppearanceTheme;
    venueWallAppearanceMode: 'light' | 'dark';
    venueWallResourceLayout: RecordBoardResourceWallLayoutPersist;
};
