import { ReactElement } from 'react';
import { InjectRouterOptions, ReactComponentProps } from '../runtime.utils.types';
/**
 * Constructs a route path by appending a given path to the base route stage defined
 * in the environment variable 'PURE_ENV_ROUTE_STAGE'. The resulting path is normalized
 * by replacing multiple consecutive slashes with a single slash and ensuring it ends
 * with a trailing slash.
 *
 * @param {string[]} path - An array of path segments to be appended to the base route stage.
 * @returns {string} The normalized route path.
 */
export declare const routePath: (path: string[]) => string;
/**
 * Injects a routing flow into the provided React children elements by mapping over them and augmenting with the router instance.
 *
 * This method recursively traverses the React component tree and injects the router instance into
 * components that are identified as `RuntimeRouterProvider` by their displayName or name.
 *
 * @param {InjectRouterOptions} params - Contains the children elements to process and the router instance to inject.
 * @param {ReactElement<ReactComponentProps>[]} params.children - The child components to which the router functionality will be injected.
 * @param {any} params.router - The router instance to be injected into the child components.
 * @return {ReactElement<ReactComponentProps>[]} Returns the modified children elements with the router injected where applicable.
 */
export declare function injectFlow({ children, router }: InjectRouterOptions): ReactElement<ReactComponentProps>[];
/**
 * Computes the intersection of two arrays, returning an array that contains only the elements
 * that are present in both input arrays. Duplicate values in the input arrays are ignored.
 * intersection
 * @param {T[]} arr1 - The first input array.
 * @param {T[]} arr2 - The second input array.
 * @return {T[]} An array containing the elements that are present in both `arr1` and `arr2`.
 */
export declare function intersection<T>(arr1: T[], arr2: T[]): T[];
