import type { Parser } from "./parsers";
import type { Nullable, Options, UrlKeys } from "./types";
type KeyMapValue<Type> = Parser<Type> & Options & {
    defaultValue?: Type;
};
export type UseQueryStatesKeysMap<Map = any> = {
    [Key in keyof Map]: KeyMapValue<Map[Key]>;
} & {};
export type UseQueryStatesOptions<KeyMap extends UseQueryStatesKeysMap> = Options & {
    urlKeys: UrlKeys<KeyMap>;
};
export type Values<T extends UseQueryStatesKeysMap> = {
    readonly [K in keyof T]: T[K]["defaultValue"] extends NonNullable<ReturnType<T[K]["parse"]>> ? NonNullable<ReturnType<T[K]["parse"]>> : ReturnType<T[K]["parse"]> | null;
};
type UpdaterFn<T extends UseQueryStatesKeysMap> = (old: Values<T>) => Partial<Nullable<Values<T>>> | null;
export type SetValues<T extends UseQueryStatesKeysMap> = (values: Partial<Nullable<Values<T>>> | UpdaterFn<T> | null, options?: Options) => Promise<URLSearchParams>;
export type UseQueryStatesReturn<T extends UseQueryStatesKeysMap> = {
    set: SetValues<T>;
} & {
    [K in keyof T]: {
        get current(): Values<T>[K];
        set current(value: Nullable<Values<T>[K]>);
    };
};
/**
 * Synchronise multiple query string arguments to Svelte state
 *
 * @param keys - An object describing the keys to synchronise and how to
 *               serialise and parse them.
 *               Use `parseAs(String|Integer|Float|...)` for quick shorthands.
 *
 * @param options - Optional history mode, shallow routing and scroll restoration options.
 */
export declare function useQueryStates<KeyMap extends UseQueryStatesKeysMap>(keyMap: KeyMap, { history, scroll, shallow, throttleMs, clearOnDefault, urlKeys, }?: Partial<UseQueryStatesOptions<KeyMap>>): UseQueryStatesReturn<KeyMap>;
export {};
