/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import type { InjectionToken } from "@ogre-tools/injectable";
export type AllowedSetValue<T> = T extends (...args: any[]) => any ? never : T extends undefined | symbol ? never : T;
export interface MigrationStore {
    readonly path: string;
    get(key: string): unknown;
    delete(key: string): void;
    has(key: string): boolean;
    clear(): void;
    set<T>(key: string, value: AllowedSetValue<T>): void;
}
export type Migrations = Partial<Record<string, (store: MigrationStore) => void>>;
export interface MigrationDeclaration {
    version: string;
    run(store: MigrationStore): void;
}
declare const persistentStorageMigrationsInjectable: import("@ogre-tools/injectable").Injectable<Record<string, (store: MigrationStore) => void>, unknown, InjectionToken<MigrationDeclaration, void>>;
export default persistentStorageMigrationsInjectable;
