export interface HashUrlData { path: (string | undefined)[]; query: { [key in QueryKeys]?: string | string[] | undefined; }; } export declare const hashJsonEncode: (data: any) => string; export declare const hashJsonDecode: (str: string) => any; export declare const hashUrlEncode: (data: HashUrlData) => string; export declare const hashUrlDecode: (str: string) => HashUrlData; export declare class Hash { private _cb?; private _emitWritten; private _writtenDataJson?; private _encode; private _decode; constructor(emitWritten?: boolean); onChange(cb: (data: T) => void): this; coders(encode: (data: T) => string, decode: (data: string) => T): this; listen(): this; read(): T; write(data: T): this; }