import { Param } from "./serializeParams";
import { parseSearch, buildSearch, SearchParams } from "./urlUtils";
export interface Location {
    pathname: string;
    search: string;
}
export type Navigate = (url: string) => void;
type ParamConfig<T> = string | Param<T>;
export declare function useStateInUrl<T>(param: ParamConfig<T>, opts: {
    location: Location;
    navigate: Navigate;
}): [
    T,
    (value: T) => void,
    (value: T | undefined) => (params: SearchParams) => SearchParams
];
export declare function useBatchUpdate(opts: {
    location: Location;
    navigate: Navigate;
}): {
    batchUpdate: (updates: Array<(params: SearchParams) => SearchParams>, options?: {
        includeExisting?: boolean;
        path?: string;
    }) => void;
};
export { parseSearch as parseQueryString, buildSearch as createQueryString };
//# sourceMappingURL=useStateInUrl.d.ts.map