declare abstract class PrefixedStore { store: Store; id: number; set(key: K, value: V): void; get(key: K): V | undefined; delete(key: K): void; revert(change: StoreChange): void; prev(key: K): V | undefined; next(key: K): V | undefined; lowerbound(key: K): V | undefined; upperbound(key: K): V; penultimate(): V | undefined; abstract prefix(): any; abstract key(key: K): any; abstract lowestKey(): any; abstract highestKey(): any; abstract parsePrefix(key: any): any; protected constructor(store: Store, options?: any); } declare class Store { private Prefix; private readonly store; private prefixes; private prefixesIndex; private changes; private isReverting; private _seq; constructor(Prefix: any, compare?: any); set seq(seq: number); get seq(): number; createPrefix(prefix: any, options?: any): PrefixedStore; deletePrefix(prefix: any): void; getPrefix(prefix: any): PrefixedStore; getPrefixById(id: number): PrefixedStore; set(key: K, value: V, prefixedStorage?: any): void; get(key: K): V; has(key: K): boolean; delete(key: K): void; prev(key: K): [K, V]; next(key: K): [K, V]; snapshot(): number; revertTo(snapshot?: number): void; pushChanges(...changes: StoreChange[]): void; } interface StoreChange { revert: any; } declare class CreatePrefixChange implements StoreChange { prefix: any; constructor(init?: Partial); revert(store: any): void; } declare class DeletePrefixChange implements StoreChange { prefixedStore: any; constructor(init?: Partial); revert(store: any): void; } declare class CreateItemChange implements StoreChange { key: any; prefixedStorage?: any; constructor(init?: Partial); revert(store: any): void; } declare class UpdateItemChange implements StoreChange { key: any; value: any; constructor(init?: Partial); revert(store: any): void; } declare class DeleteItemChange implements StoreChange { key: any; value: any; constructor(init?: Partial); revert(store: any): void; } export { PrefixedStore, Store, StoreChange, CreatePrefixChange, DeletePrefixChange, CreateItemChange, UpdateItemChange, DeleteItemChange, };