import { Dictionary } from 'ts-essentials';
declare type ReadonlyDict<T, K extends string | number> = Readonly<Dictionary<T | undefined, K>>;
export declare class CheckpointMap<T, K extends string | number = string> {
    private state;
    private checkpoints;
    constructor(state?: ReadonlyDict<T, K>);
    checkpoint(): void;
    revert(): void;
    commit(): void;
    get(k: K): T | undefined;
    set(k: K, v: T | undefined): void;
    copy(): CheckpointMap<T, K>;
}
export {};
