type NotUndefined<T> = T extends undefined ? never : T;
type Serializer<T> = (value: T) => string;
type Deserializer<T> = (value: string) => T;
interface UseUrlHashStateRawOption {
    raw: true;
}
interface UseUrlHashStateParserOption<T> {
    raw?: false;
    serializer: Serializer<T>;
    deserializer: Deserializer<T>;
}
/** @see https://foxact.skk.moe/use-url-hash-state */
declare function useUrlHashState<T>(key: string, defaultValue?: NotUndefined<T>, options?: UseUrlHashStateRawOption | UseUrlHashStateParserOption<T>): readonly [NonNullable<T> | null, (v: React.SetStateAction<T | null>) => void];

export { useUrlHashState as unstable_useUrlHashState };
export type { Deserializer, Serializer, UseUrlHashStateParserOption, UseUrlHashStateRawOption };
