import { default as React, HTMLAttributes, ReactNode } from 'react';
import { default as useShallowRouter } from '../../hooks/useShallowRouter';
type RouterMode = "search" | "pathname";
interface RouterOptions {
    mode: RouterMode;
    paramName: string;
    basePath: string;
}
/**
 * A custom hook to consume the ShallowRouter context.
 * Provides access to routing functions like `push`, `replace`, and the current `path`.
 *
 * @returns {ReturnType<typeof useShallowRouter>} The router instance.
 * @throws {Error} If used outside of a `<ShallowRouter>` provider.
 */
export declare const useRouter: () => ReturnType<typeof useShallowRouter>;
/**
 * A custom hook to access the configuration options of the nearest ShallowRouter provider.
 * Useful for components that need to behave differently based on the routing mode.
 *
 * @returns {RouterOptions} The router's configuration options.
 * @throws {Error} If used outside of a `<ShallowRouter>` provider.
 */
export declare const useRouterOptions: () => RouterOptions;
interface ShallowRouterProps {
    children: ReactNode;
    mode?: RouterMode;
    paramName?: string;
    basePath?: string;
}
/**
 * A provider component that initializes the shallow router and makes its
 * state and methods available to all descendant components.
 */
export declare const ShallowRouter: React.FC<ShallowRouterProps>;
interface ShallowRouteProps {
    /** The path to match. Supports a trailing wildcard `*` for prefix matching. */
    path: string;
    children: ReactNode;
}
/**
 * Conditionally renders its children only when its `path` prop matches the current router path.
 * Supports a trailing wildcard `*` for prefix matching (e.g., `/users/*`).
 */
export declare const ShallowRoute: React.FC<ShallowRouteProps>;
interface ShallowPageProps extends HTMLAttributes<HTMLDivElement> {
    /** The path that this page corresponds to. Used by `ShallowSwitch` to identify the active page. */
    path: string;
}
/**
 * A simple container for a page's content.
 * It should be used as a direct child of `ShallowSwitch`.
 */
export declare const ShallowPage: React.ForwardRefExoticComponent<ShallowPageProps & React.RefAttributes<HTMLDivElement>>;
interface ShallowSwitchProps {
    children: React.ReactElement<ShallowPageProps> | React.ReactElement<ShallowPageProps>[];
}
/**
 * Manages rendering `<ShallowPage>` components. It identifies the active
 * page based on the current route and renders only that page.
 */
export declare const ShallowSwitch: React.FC<ShallowSwitchProps>;
export {};
