import type { MigrateFn } from '../storage.interface'; /** * Решение о миграции персистентного состояния, принимаемое до записи. Чистая функция — * не трогает хранилище; применяет результат вызывающий (`initializeWithMiddlewares`), * т.к. запись отличается в sync/async адаптерах. */ export type MigrationDecision = /** Данных нет — записать `initialState` (если задан) и текущую версию. */ { kind: 'seed'; } /** Данные старой версии — записать `state` (результат `migrate`) и текущую версию. */ | { kind: 'migrate'; state: T; } /** Данные актуальной формы, но версию надо обновить (например, поднята без `migrate`). */ | { kind: 'bump'; } /** Ничего не делать (версии совпадают либо сохранённая новее текущей). */ | { kind: 'none'; }; export interface DecideMigrationOptions> { hasExisting: boolean; existingState: any; persistedVersion: number | undefined; targetVersion: number; migrate?: MigrateFn; } /** * Сравнивает сохранённую версию схемы с текущей (`config.version`) и решает, что делать * с персистентными данными при инициализации. Dev-предупреждения (в non-production) — * только при потенциально опасных рассогласованиях (версия поднята без `migrate`, * сохранённая версия новее текущей). */ export declare function decideMigration>(options: DecideMigrationOptions): MigrationDecision;