declare const dateReviver: (_key: string, value: any) => any;
declare const rehydrateApplicationState: ({ keys, storage, storageKeySerializer, restoreDates, }: {
    keys: Keys;
    storage: Storage;
    storageKeySerializer: (key: string) => string;
    restoreDates: boolean;
}) => any;
declare const syncStateUpdate: ({ state, keys, storage, storageKeySerializer, removeOnUndefined, syncCondition, }: {
    state: any;
    keys: Keys;
    storage: Storage;
    storageKeySerializer: (key: string) => string;
    removeOnUndefined: boolean;
    syncCondition?: (state: any) => any;
}) => void;
declare const defaultMergeReducer: (state: any, rehydratedState: any, action: any) => any;
declare const localStorageSync: (config: LocalStorageConfig) => (reducer: any) => (state: any, action: any) => any;
interface LocalStorageConfig {
    keys: Keys;
    rehydrate?: boolean;
    storage?: Storage;
    removeOnUndefined?: boolean;
    restoreDates?: boolean;
    storageKeySerializer?: (key: string) => string;
    syncCondition?: (state: any) => any;
    checkStorageAvailability?: boolean;
    mergeReducer?: (state: any, rehydratedState: any, action: any) => any;
}
interface KeyConfiguration {
    [key: string]: string[] | number[] | KeyConfiguration[] | Options | ((key: string, value: any) => any);
}
interface Options {
    serialize?: (state: any) => any;
    deserialize?: (state: any) => any;
    reviver?: (key: string, value: any) => any;
    replacer?: ((key: string, value: any) => any) | string[];
    encrypt?: (message: string) => string;
    decrypt?: (message: string) => string;
    filter?: string[];
    space?: string | number;
}
type Keys = (KeyConfiguration | Options | string)[];

export { dateReviver, defaultMergeReducer, localStorageSync, rehydrateApplicationState, syncStateUpdate };
export type { Keys, LocalStorageConfig };
