import type { URLSearchParamsInit } from "react-router-dom"; import { useLocation, useParams } from "react-router-dom"; import type { PartialPath, State } from "history"; /** * A custom partial Path object that may be missing some properties. * * This custom interface exists to provide an easier interface for * setting search params. See https://github.com/ReactTraining/react-router/issues/7743#issuecomment-785435977 * for additional context. */ interface CustomPartialPath extends Pick { /** * Search params to include in navigation. */ search?: URLSearchParamsInit; } declare type To = string | CustomPartialPath; /** * React Router specific navigation options. */ interface ReactRouterNavigateOptions { replace?: boolean; state?: State; } /** * Custom navigation options to control Clutch specific routing functionality. */ export interface NavigateOptions extends ReactRouterNavigateOptions { origin?: boolean; utm?: boolean; } /** * Convert custom search param object to string. * * ```ts * const searchObject = new URLSearchParams({ query: "value" }); * const searchString = convertSearchParam(searchObject); * console.log(searchString); // "?query=value" * ``` */ declare const convertSearchParam: (params: URLSearchParams) => string; /** * Returns an imperative method for changing the location. * * This method wraps useNavigate from react-router but has custom * logic that: * * Automatically preserves UTM parameters during navigation * * Easily preserves the origin of navigation in state * * Provides an easy interface to specify search parameters * * @see https://reactrouter.com/api/useNavigate for more information. */ declare const useNavigate: () => (to: To, options?: NavigateOptions) => void; /** * Custom search param options to control Clutch specific routing functionality. */ interface SearchParamOptions extends ReactRouterNavigateOptions { utm?: boolean; } /** * A convenience wrapper for reading and writing search parameters via the * URLSearchParams interface. This custom hook wraps react-routers implementation * but changes the function to write search parameters to preserve UTM parameters * by default. */ declare const useSearchParams: () => readonly [URLSearchParams, (params: URLSearchParamsInit, options?: SearchParamOptions | undefined) => void]; export { convertSearchParam, useLocation, useParams, useSearchParams, useNavigate }; //# sourceMappingURL=navigation.d.ts.map